Azure数据工厂: Handling inner failure in until/for activity

标签 azure error-handling etl azure-data-factory until-loop

我有一个包含 Until 事件的 Azure 数据工厂 v2 管道。

until 内部是复制事件 - 如果失败,则会记录错误,与本文中的完全相同,并且我希望循环继续。

Azure Data Factory Pipeline 'On Failure'

虽然内部复制事件的错误已得到处理,但 until 事件被视为失败,因为内部事件已失败。

ADF Screenshots

是否有任何方法可以配置直到事件在内部事件失败时继续?

最佳答案

解决方案

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

然后,您可以使用 ExecutePipeline 中的完成( azure )依赖项(而不是成功(绿色)),以便外部管道在出现内部错误的情况下继续运行。

请注意,如果您希望外部知道内部发生了什么,那么当前无法将数据从 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 那么您会收到以下错误:

“String”类型的值不支持属性选择

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

我在任何地方的 Microsoft 文档中都找不到此记录,因此在此发布血淋淋的详细信息。

关于Azure数据工厂: Handling inner failure in until/for activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62001161/

相关文章:

C 错误处理最佳实践 - 使用 exit()?

c# - C#无法查看有关API响应的错误,仅抛出异常以尝试/捕获

c# - Azure:将凭据传递给需要错误类型的 ComputeManagementClient 构造函数

azure - 您能否重置 Azure MSDN 积分,以便我可以使用其他帐户?

c++ - 如何获得有关 protobuf 解析期间生成的错误的更多详细信息? (C++)

mysql - Amazon Redshift 中的 CREATE TABLE LIKE/AS 中的表权限是否会继承?

用于将 CSV 文件上传到数据库的 Java 桌面应用程序

sql-server - SSIS - 在具有多个 '?' 的 OLE DB 源中仅指定一个参数

azure - 如何删除源数据集 (JSON) 中的重复项并将数据加载到 azure 数据工厂中的 azure SQL DB

asp.net - 重新部署后不记名 token 失效