【问题标题】:Get immediate file name copied using Azure data factory获取使用 Azure 数据工厂复制的即时文件名
【发布时间】:2021-05-06 11:13:33
【问题描述】:
场景:
需要知道使用 azure 数据工厂的复制活动从源复制到目标的文件名。
问题:
获取元数据可用于获取文件名。但是,如果文件夹中存在多个文件,我们如何知道复制了哪个文件。
【问题讨论】:
-
您现在可以使用$$FILEPATH 语法在复制活动中添加像文件路径这样的列。请参阅more examples 的文档。如果您需要更好的示例,请回复。
标签:
azure
azure-data-factory
azure-data-factory-2
azure-synapse
【解决方案1】:
也许您可以尝试按上次修改时间进行过滤。开始时间使用这个表达式:
@activity('Copy data1').output.executionDetails[0].start
结束时间使用@utcnow()
【解决方案2】:
如果您想通过内置的 ADF 活动实现要求,则需要遵循以下流程,否则可以通过 python(Azure 函数)或 csutom 活动轻松实现。
-
创建 2 个变量:
MaxLastProcessedDate = 1900-01-01
最新文件
-
在文件夹级别使用 GetMetaDataActivity 获取子项列表
-
使用 childitems 字段的输出作为 foreach 循环活动的输入
-
在 Foreach 内:
a) 文件级别的 GetMetaDataActivity(因为每次迭代都针对每个文件)
b) 如果条件活动(如果 getmetadata 活动的 lastmodifieddate > MaxLastProcessedDate)
为真:将 MaxLastProcessedDate 变量更新为 getmetadata 活动的 lastmodifieddate,并将 LatestFile 变量更新为该迭代的文件名。