You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure Data Factory中Execute Pipeline内的Notebook错误传递到外部?

Azure Data Factory 批量Notebook错误告警解决方案

下面提供几种无需给每个Notebook单独加失败分支的实现方案,满足你捕获错误并触发邮件告警的需求:

方案1:主管道统一捕获子管道错误

适合将错误处理逻辑与业务逻辑分离的场景:

  • 子管道配置(包含多个写入表的Notebook):
    1. 添加一个字符串类型的输出参数(比如errorDetails)。
    2. 将所有Notebook放入一个Sequence活动中,给该Sequence添加失败分支:在分支里用Set Variable活动将errorDetails赋值为@string(pipeline().Error)(包含失败活动名称、错误信息等完整内容),随后设置子管道失败。
  • 主管道配置:
    1. 添加Execute Pipeline活动指向子管道,开启Wait On Completion。
    2. 给这个Execute Pipeline活动添加失败分支:
      • 调用发送邮件的Databricks Notebook活动,配置Widget参数(比如error_msg)的值为@activity('Execute Child Pipeline').output.errorDetails,直接传递子管道输出的错误信息。

方案2:子管道内统一处理错误

适合在业务管道内直接完成告警的场景:

  • 将所有写入表的Notebook放入一个Sequence活动中。
  • 给Sequence活动添加失败分支:
    • 调用邮件Notebook活动,将Widget参数值设为@concat('失败活动:', pipeline().Error.ActivityName, '\n错误信息:', pipeline().Error.Message, '\n详细内容:', string(pipeline().Error)),直接拼接详细错误信息。
  • 只要Sequence内任意Notebook失败,就会触发告警分支,无需给单个Notebook配置分支。

方案3:简化版错误传递(无需子管道输出参数)

如果不需要自定义错误格式,可直接利用ADF系统变量在主管道的失败分支中传递错误:
在主管道的Execute Pipeline失败分支里,邮件Notebook的Widget参数直接使用表达式:

@string(activity('Execute Child Pipeline').error)

该表达式会返回子管道失败的完整错误对象,包含所有相关信息。

关键注意事项

  • 确保邮件Notebook已通过dbutils.widgets.get("error_msg")(对应你设置的参数名)实现接收错误信息的逻辑。
  • 所有Execute Pipeline活动需开启Wait On Completion,才能正确捕获失败状态并触发分支。

内容的提问来源于stack exchange,提问作者Tiago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:35:26