【问题标题】:Azure ADF V2 - Activity on completionAzure ADF V2 - 完成时的活动
【发布时间】:2020-12-12 00:58:19
【问题描述】:

我正在创建一个小项目来跟踪 ETL 日志。我创建了一个带有参数的存储过程和一个自定义 SQL 表来加载 ETL 日志。

在 ADF 中,我有多项活动。最后,我使用存储过程活动以及映射到 ADF 系统变量(如管道名称、错误详细信息等)的参数来登录 SQL 表。

问题:每当中间的活动发生错误时,管道就会失败并且不会触及存储过程活动。比如,假设我有 Copy1、Copy2、Copy3,最后是 ETLLog_StoredProcedure。如果 Copy2 失败,则管道运行在 Copy2 处停止,并且不运行存储过程活动。

我已使用 Activity-On-Completion 连接将所有 Copy 活动连接到 ETLLog_StoredProcedure。看看下面的图片。

期望:即使管道失败/成功,我也需要调用存储过程活动,以便我可以记录管道的状态。

【问题讨论】:

    标签: sql-server azure azure-sql-database azure-data-factory-2


    【解决方案1】:

    数据工厂依赖项用作 AND 条件。这意味着一旦所有 3 个活动都“完成”(成功或失败),存储过程将运行。但在您的场景中,第二个活动失败,第三个活动从未运行(甚至没有失败),这就是存储过程活动没有运行的原因。

    您可以通过它来实现您正在寻找的东西,根据失败发生的位置更改存储过程的参数(或在最后一个中显示成功),例如:

    还有其他方法可以实现,但需要对 ADF 变量和函数有更多的了解,这是我认为最简单的一种。

    希望这有帮助!

    【讨论】:

    • 这正是我一开始想做的,但不想这样做,因为它看起来很糟糕,但从技术上讲它不是。我想利用元数据集合,但没有太多时间,所以走同样的路。无论如何谢谢:)
    【解决方案2】:

    我添加了图片以便更好地理解

    要在管道中只有一个存储过程调用,您只需添加“跳过”选项即可。

    所以一般来说,活动“复制数据 3”有 2 个选项来完全填充执行活动“存储过程 1”的条件,完成或跳过。 由于“复制数据1”和“复制数据2”都已完成,“复制数据3”跳过“存储过程1”被执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多