如何过滤ADFPipelineRun中已成功重跑的失败流水线记录?
解决方案
1. 利用ParentRunId原生字段关联重跑记录
ADF重跑的流水线运行日志中,ParentRunId字段会直接指向原失败运行的RunId——这是Azure原生自带的关联字段,无需修改任何流水线配置。
你可以通过Kusto查询(针对Log Analytics或Azure Monitor日志)关联失败记录与对应的成功重跑记录,过滤掉已修复的失败项:
ADFPipelineRun | where Status == "Failed" | project OriginalRunId = RunId, PipelineName, FailedTime = StartTime, Status | join kind=leftouter ( ADFPipelineRun | where Status == "Succeeded" | project ParentRunId, SucceededTime = StartTime, Status ) on $left.OriginalRunId == $right.ParentRunId | where isnotempty(ParentRunId) // 仅保留有成功重跑的失败记录 | project PipelineName, FailedTime, SucceededTime, OriginalRunId, ParentRunId
基于这个查询,你可以调整监控规则,仅对无对应成功重跑记录的失败流水线触发告警,减少无效通知。
2. 通过ADF REST API补全重跑关联数据
如果部分场景下ParentRunId未正确填充,可调用ADF的Get Pipeline Run API:每个流水线运行的响应中包含reRunHistory属性,会列出关联的原运行ID与重跑记录。
你可以借助Azure Function编写轻量自动化脚本,定期批量查询失败的流水线运行,调用API获取关联信息后,将数据写入Log Analytics或存储账户,补充到现有日志体系中,实现统一查询。
3. 使用ADF内置Azure Monitor工作簿
ADF在Azure Monitor中提供了内置的流水线运行监控工作簿,其中已预配置重跑记录的关联逻辑,可直观展示失败运行及其重跑状态。你可以直接使用该工作簿,或自定义筛选规则,仅显示未被成功重跑的失败流水线,简化监控视图。
内容的提问来源于stack exchange,提问作者myrsnipe
相关产品推荐
相关产品推荐

