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

ADF Log Analytics:TriggerRun与ActivityRun的关联查询问题及Kusto查询指导请求

关联ADFTriggerRun与ADFActivityRun的Kusto查询思路及示例

刚接触Kusto和ADF日志关联确实容易摸不着头脑,我来给你理清楚核心逻辑,再给你现成的查询示例参考。

核心关联思路

ADF的运行链路是:触发器运行(TriggerRun)→ 启动流水线(PipelineRun)→ 执行活动(ActivityRun),所以TriggerRun和ActivityRun不是直接关联的,必须通过ADFPipelineRun这个中间表作为桥梁,对应的字段关联关系是:

  • ADFTriggerRun.TriggerRunId ↔ ADFPipelineRun.TriggerRunId
  • ADFPipelineRun.PipelineRunId ↔ ADFActivityRun.PipelineRunId

分步查询示例

1. 先查看TriggerRun的基础信息(确认关联字段)

ADFTriggerRun
| where TimeGenerated > ago(24h)  // 按需调整时间范围
| project 
    TriggerRunId, 
    PipelineRunId,  // 这里能直接看到Trigger触发的PipelineRunID
    TriggerName, 
    TriggerType, 
    Status, 
    TriggerCorrelationId = CorrelationId,
    TimeGenerated

2. 关联TriggerRun与PipelineRun

ADFPipelineRun
| where TimeGenerated > ago(24h)
| join kind=inner (
    // 子查询获取Trigger的关键信息
    ADFTriggerRun
    | where TimeGenerated > ago(24h)
    | project TriggerRunId, TriggerName, TriggerCorrelationId = CorrelationId
) on TriggerRunId
| project 
    TriggerName,
    TriggerRunId,
    TriggerCorrelationId,
    PipelineName,
    PipelineRunId,
    PipelineStatus = Status,
    TimeGenerated

3. 完整关联TriggerRun → PipelineRun → ActivityRun

这是最常用的完整关联查询,可以一次性看到触发器、流水线、活动的全链路运行信息:

ADFActivityRun
| where TimeGenerated > ago(24h)
| join kind=inner (
    // 先关联Trigger和Pipeline
    ADFPipelineRun
    | where TimeGenerated > ago(24h)
    | join kind=inner (
        ADFTriggerRun
        | where TimeGenerated > ago(24h)
        | project TriggerRunId, TriggerName, TriggerCorrelationId = CorrelationId
    ) on TriggerRunId
    | project PipelineRunId, TriggerRunId, TriggerName, PipelineName, TriggerCorrelationId
) on PipelineRunId
| project 
    TriggerName,
    TriggerRunId,
    TriggerCorrelationId,
    PipelineName,
    PipelineRunId,
    ActivityName = Name,
    ActivityType = Type,
    ActivityStatus = Status,
    ActivityStartTime = StartTime,
    ActivityEndTime = EndTime,
    TimeGenerated

实用技巧

  • 如果想排查“有没有Trigger触发了但没有对应的Activity”这类问题,可以把kind=inner改成kind=leftouter,这样会保留所有Trigger/Pipeline记录,即使没有匹配的Activity
  • 可以在任意表后面添加过滤条件,比如| where TriggerName == "你的触发器名称"或者| where ActivityStatus == "Failed"来聚焦特定场景
  • 注意统一时间范围,避免因为时间差导致部分记录关联不上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:12:48