【问题标题】:Azure Data Factory V2 Copy Activity - Save List of All Copied FilesAzure 数据工厂 V2 复制活动 - 保存所有复制文件的列表
【发布时间】:2020-12-05 19:45:09
【问题描述】:

我有将文件从本地复制到不同接收器的管道,例如本地和 SFTP。 我想保存在每次运行中复制的所有文件的列表以供报告。

我尝试使用 Get Metadata 和 For Each,但不确定如何将输出保存到平面文件甚至数据库表中。

或者,是否可以细化复制到数据工厂日志中某处的对象列表?

谢谢

【问题讨论】:

  • 您的意思是要将 Copy 活动的输出信息保存到错误文件或 SQL 表中吗? Here是一些例子,但不包括记录源文件名。
  • 嗨@elasticSol,如果我在答案中理解错误,请纠正我。
  • 嗨@JosephXu 看起来不错。我审查了它,但没有机会完成它。我会这样做,让你知道它是怎么回事。我很感激!
  • 嗨@elasticSol,您有什么问题吗?让我们知道并一起解决。
  • 嗨 @JosephXu 我有 2 个问题:1. 在第 3 步中,我收到此错误:二进制副本不支持从文件夹复制到文件。 -- 2. 在 ForEach 活动的设置屏幕中,您输入的“项目”是什么?再次感谢您

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


【解决方案1】:

更新:

项目:@activity('Get Metadata1').output.childItems



如果您想记录源文件名,是的,我们可以。正如您所说,我们需要使用 Get Metadata 和 For Each 活动。
我创建了一个测试来将 Copy 活动的源文件名保存到 SQL 表中。

  1. 众所周知,我们可以通过获取元数据活动中的Child items 获取文件列表。 Get Metadata1 活动的数据集指定包含多个文件的容器。 test 容器中的文件列表如下:

  2. 在 ForEach 活动的内部,我们可以遍历这个数组。我设置了一个名为Copy-Files 的复制活动来将文件从源复制到目标。

  3. @item().name 代表 test 容器中的每个文件。我键入动态内容@item().name 来指定文件名。 然后它将依次传递测试容器中的文件名。这是分批执行复制任务,每批都会传入一个要复制的文件名。以便我们以后可以将每个文件名记录到数据库表中。

  4. 然后我设置另一个复制活动将文件名保存到 SQL 表中。这里我使用 Azure SQL,并创建了一个简单的表。

create table dbo.File_Names(
    Copy_File_Name varchar(max)
);
  1. 正如post 所说,我们可以使用类似的语法select '@{item().name}' as Copy_File_Name 来访问ADF 中的一些活动数据。 注意:别名应与 SQL 表中的列名相同。

  2. 然后我们可以将文件名下沉到 SQL 表中。
    选择之前创建的表。

  3. 运行调试后,我可以看到所有文件名都保存到表中。

如果您想添加更多信息,可以参考我之前维护的post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2020-08-14
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多