我想复制 Azure Blob 存储中容器中的文件,该存储包含大约 10,000,000 个文件。
文件名格式类似于“Energy_ReportName_Timestamp_VersionNumber.zip”。示例文件名可以是“Energy_Payment_20231209110007_0000000404988124.zip”。文件名末尾的版本号没有规则的模式。
所有文件都位于源容器中,没有子文件夹或嵌套文件夹。
我想过滤从 StartDate 到 EndDate 的特定 ReportName 的 zip 文件,并将这些文件复制到目标容器。
例如,“ReportName”= Payment 的文件;且 StartDate = 20231101(在此日期的任何时间和任何版本号)且 EndDate = 20231205。
由于源容器中有数百万个文件,我正在寻找一种方法,可以快速找到所需文件并使用 Azur eData Factory 中的复制活动将它们复制到接收器容器。
我想避免在每个日期上使用循环,因为它会使过滤一天的文件、复制文件,然后在接下来的几天重复该过程的速度变慢。
有什么方法可以过滤或选择所有所需的文件(从开始日期到结束日期),并在一次运行中复制它们?
这些是我的输入容器中名为
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 创建管道参数
在 ADF 管道的复制活动中,获取二进制源和二进制目标数据集。在源和接收器数据集中,给出路径直到容器名称。
同样,给出目标二进制数据集中直到目标容器的路径。
现在,提供源数据集以复制活动源并提供通配符文件名
*@{pipeline().parameters.ReportName}_@{formatDateTime(pipeline().parameters.StartDate,'yyyyMMdd')}*.zip
以及开始日期和结束日期以按上次修改过滤文件,如下所示。
现在运行管道,您可以看到所需的文件将被复制到目标位置,如下所示。