Azure DataFactory运行活动以响应多个活动中的任何一项失败

问题描述

假设我在管道的一部分执行“设置”任务,然后在最后执行匹配的清除任务。 如果中间出现问题,我想执行其他清理任务。

我该如何配置?

我不能仅仅声明对最终任务的失败依赖,因为链中较早的失败意味着以后的活动不会运行,因此成功也不会失败。

无论如何我都看不到配置“ OR”依赖项,就像我在sql Server维护任务时代那样:)

目前看来,最好的选择是将我的失败活动复制5次,然后每次都复制到每个EACH中介步骤的失败上?

解决方法

解决方案是“已跳过”状态。

如果设置成功,并且跳过了“成功清除”,则声明“失败清除”。

来自Activity Dependency States上的MSDN:

活动依赖性

活动依赖性定义了后续活动如何依赖于先前的活动,从而确定是否继续执行下一个任务的条件。一个活动可以依赖于一个或多个先前的活动,而这些活动具有不同的依赖条件。

不同的依赖条件是:成功,失败,跳过,完成。

例如,如果管道具有活动A->活动B,则可能发生的不同情况是:

  • 活动B对活动A的依赖条件为成功
    • 仅当活动A的最终状态为成功时,活动B才会运行。
  • 活动B对活动A的依赖条件为失败
    • 活动B仅在活动A的最终状态为失败时运行。
  • 活动B具有对活动A的依赖条件,且已完成
      如果活动A的最终状态为成功失败
  • ,则
  • 活动B运行
  • 活动B具有活动跳过的依赖项:
    • 如果活动A的最终状态为“已跳过” ,则活动B将运行。
    • 跳过在活动X->活动Y->活动Z的情况下发生,其中每个活动仅在上一个活动成功成功时运行。如果活动X 失败,则活动Y的状态为“已跳过”,因为它从不执行。同样,活动Z的状态也为“已跳过”。