将 ForEach SQL 加载到 Azure 数据工厂中的单个 CSV 中

Bri*_*ian 0 azure-data-factory

我有一个 ADF,在 ForEach 中执行存储过程并使用复制数据将输出加载到 CSV 文件中

在 ForEach 的每次迭代中,CSV 都会被清除并加载该迭代的数据

我要求它保留已加载的数据并插入迭代的输出

CSV 应具有所有迭代的完整数据集

我怎样才能实现这个目标?我尝试在接收器复制行为中使用“合并文件”选项,但不适用于 SQL 到 CSV

小智 5

正如@All About BI 提到的,目前不支持您正在寻找的附加行为

\n

您可以从ADF 门户提出功能请求

\n

在此输入图像描述

\n

或者,您可以检查以下过程以将数据附加到 CSV 中。

\n
    \n
  1. 在我的重现中,我使用 Set Variable 活动生成循环项并将其传递给 ForEach 活动。

    \n
  2. \n
  3. 在 Activity内部ForEach,使用copy dataActivity,执行 Source 中的存储过程,并将存储过程的数据复制到 CSV 文件。

    \n
  4. \n
\n

在此输入图像描述

\n
    \n
  1. 在活动接收器中,使用ForEachCopy data循环的当前项生成文件名,以便每次迭代将数据获取到不同的文件中。还添加一个常量来标识文件名,合并文件后可以在最后删除该常量。
  2. \n
\n

文件名@concat(\'1_sp_sql_data_\',string(item()),\'.csv\')

\n

在此输入图像描述

\n
    \n
  1. 在该活动之后添加另一个copy data活动ForEach,以将 ForEach 迭代中的所有文件数据合并到单个文件中。在这里,我使用通配符路径(*)来获取文件夹中的所有文件。
  2. \n
\n

在此输入图像描述

\n
    \n
  1. 在接收器中,将具有复制行为的目标文件名添加为合并文件,以将所有源数据复制到单个接收器文件。
  2. \n
\n

在此输入图像描述

\n
    \n
  1. 合并文件后,数据将复制到单个文件,但文件不会被删除。因此,当您下次运行管道时,旧文件也有可能再次与新文件合并。
  2. \n
\n

\xe2\x80\xa2 为了避免,此添加删除活动来删除ForEach 活动中生成的文件。

\n

\xe2\x80\xa2 由于我添加了一个常量来生成这些文件,因此可以很容易地根据文件名删除文件删除所有以\xe2\x80\x9c1_\xe2\x80\x9d开头的 文件)。

\n

在此输入图像描述

\n

在此输入图像描述

\n

目标文件:

\n

在此输入图像描述

\n