Azure 数据工厂 - 如何创建多个数据集并对同一 blob 容器中的文件应用不同的处理方式?

Azure Data Factory - How to create multiple datasets and apply different treatments on files in same blob container?

在此处启动 Azure 数据工厂。

我有一个场景,我收集存储在单个 Azure blob 容器中的 csv 文件(不同来源和 formats/templates)。我想将数据提取到 SQL 数据库中。在将数据推送到 SQL 之前,我需要根据格式对文件进行不同的处理。每个文件名中都指明了格式(例如:Myfile-formatA-20201201)。

我不清楚我的管道/数据集设置。我假设我需要为每种 CSV 格式创建一个新的(输入)数据集,但无法找到一种方法来依靠不同的命名模式来创建差异化的数据集。如果改为创建单个输入数据集,我可以使用在输入中创建的相同单个数据集并应用不同的过滤规则(依赖于我的文件命名模式)来创建具有差异副本 activity 的管道 - 这似乎工作正常对于具有相同编码、列分隔符等的文件。但正如预期的那样,对于其他不相同的文件失败。

我找不到任何关于如何应用过滤器从同一容器中包含的文件创建多个数据集的官方信息。有可能吗?或者是将不同格式的文件存放在不同的容器或目录中的前提条件?

我创建了一个测试,根据文件名在一个 pipeline.Then select 不同的复制活动中复制不同格式的 csv。我想这就是你想要的答案。

  1. 在我的容器中,我创建了两种格式的 csv:

  2. input 容器创建数据集:

编辑:不要在文件路径中指定文件

  1. 使用Get Metadata1 activity得到Child items 输出结果如下:

  2. 那么在ForEach1activity中,我们就可以遍历这个数组了。将动态内容 @activity('Get Metadata1').output.childItems 添加到 项目 选项卡。

5.InsideForEach1activity,我们可以使用Switch1activity,将动态内容@split(item().name,'-')[1]添加到表达式。它将获得格式名称。如:Myfile-formatA-20201201 -> formatA

  1. 默认情况下,我们可以复制fortmatA的csv文件。

编辑:为了select只有名称中带有“formatA”的文件,在副本activity中,使用通配符文件路径选项:

enter image description here

  1. 键入@item().name,这样我们就可以指定一个csv文件。

  2. 添加formatB案例:

    然后使用相同的源数据集。

编辑:与上一步一样,使用通配符文件路径选项:

enter image description here

就是这样。我们可以在这些复制活动中设置不同的sink