Azure数据工厂-如何使用ForEach循环遍历CSV文件中的记录

时间:2020-09-18 11:46:53

标签: azure csv azure-data-factory azure-data-flow

我要实现的目标:

  • 我有一个包含以下各列的CSV(FlattenedListDocument.csv)

DocumentKey,DocumentName

示例值如下(此CSV文件中大约有240,000行):

12212,银河系旅行者指南 12233,MoneyBall

  • 我必须为CSV文件中的每一行创建一个JSON文件,该文件将由另一个实用程序使用(每行一个文件)。
  • 我对如何将CSV表中的值推送到ForEach活动以使其遍历CSV文件进行迭代循环感到困惑。

2 个答案:

答案 0 :(得分:1)

这是在Data Factory中解决的一个非常有趣的问题。我看到的唯一选择是拥有一个带有接收器分区的数据流,该数据流基于派生列输出文件。

  1. 创建一个派生列,以生成唯一的blob名称。 确保包含文件夹路径

enter image description here

  1. 在接收器的“设置”下,将“文件名选项”更改为“列中的数据”,然后选择在步骤1中创建的FileName列。

enter image description here

  1. 可选,但在“映射”下的接收器中,删除“文件名”列:

enter image description here enter image description here

  1. 完成后,您应该将其保存在Blob存储中:

enter image description here

当然,需要注意的是文件名必须唯一,因此我基于示例的第一列(我将其命名为“ Id”)。我不知道280K文件的性能如何,但这应该可以得到想要的结果。

答案 1 :(得分:0)

我实现了以下帮助我解决核心问题的方法(读取CSV文件并将值传递到ForEach循环)。

第1步和第2步不是核心问题的一部分,但可以帮助阅读此书的其他任何人理解FlattenedListDocument.csv的出现方式。

总体架构

enter image description here

步骤1:调用网络服务以获取JSON文件(XML文件作为数据集,JSON文件作为接收器)。

第2步:创建数据流以展平文件。创建一个CSV作为接收器(并将接收器分成100等份(以允许CSV文件中最多增加500,000条记录)。

enter image description here

第3步:对文件进行查找并获取其内容(最终将将其包装在GetMetadata / ForEach循环中,该循环将调用另一个管道以提取每个文件的内容)。

第4步:使用ForEach循环提取内容(这将使用管道中查找中的Name值作为参数来调用另一个WebService)

enter image description here