Azure data factory 使用Azure Data Factory在不同文件夹中复制不同格式的文件

Azure data factory 使用Azure Data Factory在不同文件夹中复制不同格式的文件,azure-data-factory,azure-data-factory-pipeline,Azure Data Factory,Azure Data Factory Pipeline,我是Azure数据工厂的新手,我正在尝试解决一个特定的用例。我必须将文件从源文件夹复制到目标文件夹,这两个文件夹都在同一个存储帐户中。源文件夹中的文件具有不同的格式(csv、txt、xml),并在末尾附加日期,例如:addresses_2020-11-01.csv(日期格式:yyyy-mm-dd) 我必须创建一个管道,在这个层次结构中对动态文件夹中的文件进行排序和存储:ex:csv->yyy->mm->dd。我的理解是,首先我必须将文件过滤成不同的格式,然后使用split函数拆分存在的子字符串,

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

我必须创建一个管道,在这个层次结构中对动态文件夹中的文件进行排序和存储:ex:csv->yyy->mm->dd。我的理解是,首先我必须将文件过滤成不同的格式,然后使用split函数拆分存在的子字符串,然后根据年、月、月动态创建文件夹,和文件名中的日期。下面是我迄今为止创建的管道截图:我无法显示截图,但链接打开了截图

[用于筛选文件并复制到目标文件夹的管道]

我所做的:

  • 使用Get元数据提取子项
  • 将Get元数据的输出过滤到csv、txt和xml文件中
  • 用于包含复制活动的每个活动。由于通配符包含*.txt、*.csv、*.xml,此活动将文件从“筛选”活动复制到相应的文件夹(csv、txt..)中
  • 我不确定过滤文件后,如何正确地前进,以便根据文件名中的日期创建动态文件夹。我想我需要使用set变量活动和copy活动,但不确定如何实现这一点。任何帮助都将不胜感激


    谢谢

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

    步骤:

    1.使用Get元数据提取子项

    2.用于包含将活动副本复制到不同文件夹的每个活动

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

    复制活动源:

    源数据集:

    复制活动接收器:

    接收器数据集:

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

    源文件夹中的文件:

    结果:


    谢谢@Steve Zhao。这工作做得很好。在过去的两周里,我一直在努力解决这个问题,而你却让它变得如此简单。谢谢!!你能简要解释一下拆分功能是如何工作的吗。我有点困惑为什么在最后3次迭代中有多个拆分函数。该表达式用于根据文件名获取目标文件夹路径:
    csv | txt | xml/year/month/day
    。每个分割函数用于获取目标文件夹路径的单个部分。然后使用
    /
    连接它们以构建目标文件夹路径。