如何在不使用管道参数循环的情况下过滤和复制 Azure 数据工厂中的文件?

问题描述 投票:0回答:1

我想复制 Azure Blob 存储中容器中的文件,该存储包含大约 10,000,000 个文件。

文件名格式类似于“Energy_ReportName_Timestamp_VersionNumber.zip”。示例文件名可以是“Energy_Payment_20231209110007_0000000404988124.zip”。文件名末尾的版本号没有规则的模式。

所有文件都位于源容器中,没有子文件夹或嵌套文件夹。

我想过滤从 StartDateEndDate 的特定 ReportName 的 zip 文件,并将这些文件复制到目标容器。

例如,“ReportName”= Payment 的文件;且 StartDate = 20231101(在此日期的任何时间和任何版本号)且 EndDate = 20231205。

由于源容器中有数百万个文件,我正在寻找一种方法,可以快速找到所需文件并使用 Azur eData Factory 中的复制活动将它们复制到接收器容器。

我想避免在每个日期上使用循环,因为它会使过滤一天的文件、复制文件,然后在接下来的几天重复该过程的速度变慢。

有什么方法可以过滤或选择所有所需的文件(从开始日期到结束日期),并在一次运行中复制它们?

loops filter copy azure-data-factory azure-blob-storage
1个回答
0
投票

这些是我的输入容器中名为

inputdata
的文件。

Energy_Payment_20231209110007_0000000404988124.zip
Source_Payment_20231209010215_0000000404982426.zip
Employee_Payment_20231209122424_00000004049171224.zip
Business_Cash_20231209101602_0000000404988124.zip
Fund_Payment_20231208161001_0000000404988124.zip

为 Startdate、EndData 和 ReportName 创建管道参数

enter image description here

在 ADF 管道的复制活动中,获取二进制源和二进制目标数据集。在源和接收器数据集中,给出路径直到容器名称。

enter image description here

同样,给出目标二进制数据集中直到目标容器的路径。

现在,提供源数据集以复制活动源并提供通配符文件名

*@{pipeline().parameters.ReportName}_@{formatDateTime(pipeline().parameters.StartDate,'yyyyMMdd')}*.zip
以及开始日期和结束日期以按上次修改过滤文件,如下所示。

enter image description here

现在运行管道,您可以看到所需的文件将被复制到目标位置,如下所示。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.