使用 Azure 数据工厂将不同格式的文件复制到不同的文件夹中

Copy files of different formats in different folders based using Azure Data Factory

我是 Azure 数据工厂的新手,我正在尝试解决一个特定的用例。我必须将文件从源文件夹复制到目标文件夹,这两个文件夹都在同一个存储帐户中。源文件夹中的文件格式不同(csv、txt、xml)并在末尾附加日期,例如:addresses_2020-11-01.csv(日期格式:yyyy-mm-dd )

我必须创建一个管道,将文件排序并存储在此层次结构中的动态文件夹中:例如:csv->yyyy->mm->dd。我的理解是首先我必须将文件过滤成不同的格式,然后使用拆分函数拆分有 _ 的子字符串,然后根据文件名中的年月日动态创建文件夹。下面是我到目前为止创建的管道的屏幕截图:我无法显示屏幕截图,但 link 打开屏幕截图。

[管道过滤文件,并复制到目标文件夹]

我做了什么:

  1. 使用获取元数据提取子项
  2. 将获取元数据的输出过滤为 csv、txt 和 xml 文件
  3. 对包含副本 activity 的每个 activity 使用。此 activity 将文件从过滤器 activity 复制到相应的文件夹(csv、txt..),因为通配符包含 *.txt、*.csv、*.xml

我不确定一旦文件被过滤以便根据文件名中的日期创建动态文件夹的正确方法是什么。我想我需要使用 set Variable activity 和 copy activity 但不确定如何完成此操作。任何帮助将不胜感激。

谢谢!!

如果您只想复制文件,则无需使用不同的格式。您可以只使用二进制格式。像这样:

步骤:

1.Use 获取元数据以提取子项

2.Use 对于每个包含副本的 activity activity 复制到不同的文件夹。

表达式:@activity('Get Metadata1').output.childItems

复制activity来源:

源数据集:

复制activity接收器:

接收器数据集:

表达式:@concat(split(item().name,'.')[1],'/',split(split(item().name,'_')[1],'-')[0],'/',split(split(item().name,'_')[1],'-')[1],'/',split(split(split(item().name,'_')[1],'-')[2],'.')[0])(这适用于您的 eg 文件名:addresses_2020-11-01.csv)

源文件夹中的文件:

结果: