在 Azure 数据工厂中,如果我们再次收到与上次加载相同的源 CSV 数据以将数据加载到 Target 中,会怎样。
情况如下。
我收到了一个 Blob 存储名称为 data_2023_04_24.csv 的 CSV 文件,其中包含以下数据,
colA,colB 1A、1B
并将此数据复制到 SQL Server 表中(完全刷新)。
第二天,收到相同的文件名data_2023_04_25.csv,其中包含与上述相同的数据。现在我不想进一步运行管道或使管道失败,以便我可以在源和目标中创建具有相同数据的警报。
我们有什么方法可以在 Azure 数据工厂中处理这种情况。
您可以使用以下方法仅将新文件或更新的文件从源复制到 Azure 数据工厂中的接收器。您可以并行使用两个获取元数据活动来获取源和接收器的子项列表。然后,您可以使用 Filter 活动来过滤掉接收器中已存在的文件。然后,您可以使用 For Each 活动来迭代筛选的列表并复制丢失的文件。
步骤:
采用过滤器活动并将项目表达式指定为
@activity('source file list').output.childItems
。将条件表达式指定为 @not(contains(activity('sink file list').output.childItems,item()))
然后采用 foreach 活动,并在 foreach 设置中将项目的表达式指定为
@activity('Filter1').output.Value
。
在 foreach 内部,添加复制活动以仅将过滤后的文件复制到接收器。
这样,您可以避免在 ADF 中复制重复的文件。