2

我有一个包含直到活动的 Azure 数据工厂 v2 管道。

直到内部是一个复制活动 - 如果失败,则会记录错误,就像在这篇文章中一样,我希望循环继续。

Azure 数据工厂管道“失败”

尽管内部复制活动的错误得到了处理,但直到活动被认为已失败,因为内部活动已失败。

ADF 截图

当内部活动失败时,有什么方法可以配置直到活动继续?

4

1 回答 1

3

解决方案

将错误处理步骤放在它们自己的管道中,并从 ExecutePipeline 活动中运行它们。您需要传入外部管道所需的所有参数。

然后,您可以使用 ExecutePipeline 中的完成(蓝色)依赖项(而不是成功(绿色)),因此尽管存在内部错误,外部管道仍继续运行。

请注意,如果您希望外部知道内部发生了什么,那么目前无法将数据从 ExecutePipeline 传递给其父级(https://feedback.azure.com/forums/270578-data-factory/suggestions /38690032-add-ability-to-customize-output-fields-from-execut)。

要解决此问题,请使用 ExecutePipeline 中的 sp 活动将数据写入 SQL 表,并使用管道运行 ID 进行标识。这可以在管道内部使用@pipeline().RunId.

然后在管道之外,您可以在 SQL 表中进行查找,使用运行 ID 来获取正确的行。

健康警告:

由于某些奇怪的原因,ExecutePipeline 的输出不是作为 JSON 对象返回,而是作为字符串返回。因此,如果您尝试选择这样的输出属性,@activity('ExecutePipelineActivityName').output.something则会出现以下错误:

“字符串”类型的值不支持属性选择

因此,要从外部获取 ExecutePipeine 的运行 ID,您需要: @json(activity('ExecutePipelineActivityName').output).pipelineRunId

我无法在任何地方的 Microsoft 文档中找到此文档,因此在这里发布了血淋淋的细节。

于 2020-05-27T08:14:46.247 回答