如何在Azure ADF中检查指定Notebook运行状态并触发自动补跑?
检查campaign_inseason Notebook运行状态的方法
1. 直接引用活动输出属性(最简便)
如果你的新工作流中直接执行campaign_inseason Notebook活动,或者调用包含它的原工作流,可通过活动的内置输出字段获取状态:
- 假设Notebook活动名称为
campaign_inseason_notebook,在If Activity的条件中使用表达式:@equals(activity('campaign_inseason_notebook').status, 'Succeeded') - 常见状态值:
Succeeded(成功)、Failed(失败)、Cancelled(取消),按需判断即可。
2. 通过ADF REST API跨工作流查询
若新工作流独立于原Notebook所在工作流,可调用ADF的Pipeline Runs - Query By Factory API查询历史运行状态:
- 构造筛选条件,指定活动名称为
campaign_inseason_notebook,并限定查询当天的运行记录 - 示例请求体(可在Web Activity中发起调用):
{ "lastUpdatedAfter": "YYYY-MM-DDTHH:MM:SSZ", "lastUpdatedBefore": "YYYY-MM-DDTHH:MM:SSZ", "filters": [ { "operand": "ActivityName", "operator": "Equals", "values": ["campaign_inseason_notebook"] } ] } - 从响应结果中提取对应活动的
status字段即可判断状态。
3. 查询监控日志数据集(若已配置)
如果你的ADF已将运行日志同步到存储账户或数据库:
- 直接查询日志表,筛选
activity_name = 'campaign_inseason_notebook'且运行时间为当天的记录 - 从
status字段获取该Notebook的运行状态。
针对你的场景的落地建议
因为你需要实现"成功则等待,失败则重试"的逻辑,优先用第一种方法:
- 在新工作流中嵌入
campaign_inseasonNotebook活动(或用Execute Pipeline Activity调用原工作流) - 添加If Activity,用上述表达式判断状态
- If分支配置Wait Activity;Else分支直接重新调用该Notebook活动(或用Retry Activity实现重试逻辑)
内容的提问来源于stack exchange,提问作者pitaji sharma
相关产品推荐
相关产品推荐

