【发布时间】:2020-03-06 06:34:39
【问题描述】:
在Data Lake里面,我们有一个文件夹,里面基本上就是每天外源推送的文件。但是,我们只想处理该文件夹中最新添加的文件。 有没有办法通过 Azure 数据工厂实现这一目标?
【问题讨论】:
标签: azure azure-data-factory azure-data-lake last-modified
在Data Lake里面,我们有一个文件夹,里面基本上就是每天外源推送的文件。但是,我们只想处理该文件夹中最新添加的文件。 有没有办法通过 Azure 数据工厂实现这一目标?
【问题讨论】:
标签: azure azure-data-factory azure-data-lake last-modified
当您在复制活动中使用 ADLS 连接器时,您可以设置 modifiedDatetimeStart and modifiedDatetimeEnd 来过滤文件夹中的文件。
可能有两种情况:
1.数据是由外部源推送的在调度中,你应该知道要配置的调度时间。
2.频率是随机的,那么可能你需要在另一个地方记录推送数据的时间,然后将时间作为参数传递到复制活动管道中,然后再执行。
我尝试在 ADF 管道中为您提供如下流程:
我在同一文件夹中的示例文件:
Step1,创建两个变量,maxtime和filename:
maxtime是特定日期的关键日期时间,文件名是空字符串。
Step2,使用GetMetadata Activity和ForEach Activity获取文件夹下的文件。
GetMetadata 1 配置:
ForEach Activity 配置:
Step3:在ForEach Activity内部,使用GetMetadata和If-Condition,结构如下:
GetMetadata 2 配置:
If-Condition Activity 配置:
Step4:在 If-Condition True 分支中,使用 Set Variable Activity:
设置变量1配置:
设置 variable2 配置:
以上所有步骤都是为了找到最新的文件名,变量文件名正是目标。
在 GetMetadata 2 中添加另一个新数据集
【讨论】:
GetMetadata Activity。我的意思是,如果您操纵将数据推送到 ADLS 的过程,那么即使推送时间是随机的,您也肯定知道推送时间,然后您可以自己持久化时间,以便将其用作 ADF 中的参数。