【问题标题】:Azure Data Factory 2 : How to split a file into multiple output filesAzure 数据工厂 2:如何将文件拆分为多个输出文件
【发布时间】:2020-07-29 02:57:53
【问题描述】:

我正在使用 Azure 数据工厂并正在寻找“查找”活动的补充。基本上我希望能够将一行写入文件。

设置如下:

  • 使用查找活动从 Blob 存储中的 CSV 文件读取
  • 将其输出连接到 For Each
    • 在 For Each 中,获取每条记录(查找活动读取的文件中的一行)并将其写入动态命名的不同文件中。

关于如何做到这一点的任何线索?

【问题讨论】:

    标签: azure-data-factory-2 azure-blob-storage


    【解决方案1】:

    使用数据流,使用派生列活动创建文件名列。使用接收器中的文件名列。有关如何在 ADF 中实现动态文件名的详细信息,请参见此处:https://kromerbigdata.com/2019/04/05/dynamic-file-names-in-adf-with-mapping-data-flows/

    【讨论】:

      【解决方案2】:

      数据流可能会更好,但作为一种快速破解,您可以执行以下操作以在管道中逐行读取文本文件:

      1. 定义您的源数据集以将一行输出为单列。通常我会为此使用“NoDelimiter”,但 Lookup 不支持。作为一种解决方法,使用不正确的列分隔符定义它(如 | 或 \t 用于 CSV 文件)。您还应该转到架构选项卡,然后清除架构。这将在输出中生成一个名为“Prop_0”的列。

      2. 在 foreach 活动中,将 Items 设置为 Lookup 的“output.value”并选中“Sequential”。

      3. 在foreach内部,可以使用item().Prop_0来抓取该行的文本:

      4. 据我所知,管道不直接支持创建 blob [因此我建议在上面查看数据流]。但是,在 Logic Apps 中执行此操作非常简单。如果我正在解决这个问题,我会创建一个带有 HTTP 请求已接收触发器的逻辑应用,然后使用 Web 活动从 ADF 调用它,并在负载中发送文本行和动态文件名。

      【讨论】:

      • 嗨乔尔,感谢您的建议。听起来像为此添加逻辑应用流将提供解决方案。
      猜你喜欢
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多