管道阶段明智故障示例报告

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

本文介绍如何创建管道的每日阶段故障报告。 此报表类似于管道传递速率报告的“故障趋势”图表

下图显示了从 2022 年 10 月到 2022 年 12 月 15 日特定管道的分阶段故障报告示例。

Power BI 管道分阶段失败列报表的屏幕截图。

重要

Power BI 集成 和对 分析服务的 OData 源 的访问权限通常用于 Azure DevOps Services 和 Azure DevOps Server 2020 及更高版本。 本文中提供的示例查询仅适用于 Azure DevOps Server 2020 及更高版本,具体取决于 v3.0-preview 或更高版本。 我们鼓励你使用这些查询并提供反馈。

先决条件

  • 若要查看 Analytics 数据并查询服务,你需要是具有 基本 访问权限或更高访问权限的项目的成员。 默认情况下,向所有项目成员授予查询 Analytics 和定义 Analytics 视图的权限。
  • 若要了解有关服务和功能启用以及常规数据跟踪活动的其他先决条件,请参阅 访问 Analytics 的权限和先决条件

注意

本文假定你已阅读 使用 OData 查询的示例报表概述 ,并基本了解 Power BI。

示例查询

可以通过查询 PipelineRunActivityResults 实体集来创建阶段、任务或作业失败趋势报告。

注意

若要确定用于筛选器或报表目的的可用属性,请参阅 Azure Pipelines 的元数据参考。 可以使用 提供的 EntitySetNavigationPropertyBinding Path 值下EntityType的任何Property值筛选查询或返回属性。 每个对应 EntitySet 一个 EntityType。 若要详细了解每个值的数据类型,请查看为相应的 EntityType提供的元数据。

分阶段故障趋势

若要从指定日期查看特定管道的分阶段故障趋势,请使用以下查询。

可以将下面列出的 Power BI 查询直接粘贴到 “获取数据空白>查询 ”窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报表概述

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRunActivityResults?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and PipelineRunCompletedOn/Date ge {startdate} "
                &"and PipelineRunOutcome eq 'Failed' "
        &"and TaskOutcome eq 'Failed' "
        &") "
            &"/groupby( "
                &"(PipelineRunCompletedOn/Date, PipelineRunId, PipelineJob/StageName ), "
                &"aggregate (FailedCount with sum as FailedCount)) "
            &"/groupby( "
                &"(PipelineRunCompletedOn/Date, PipelineJob/StageName ), "
            &"aggregate "
        &"(cast(FailedCount gt 0, Edm.Int32) with sum as FailedStageCount)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

替换字符串和查询明细

将以下字符串替换为值。 不要在替换中包含括号 {} 。 例如,如果组织名称为“Fabrikam”,请将 替换为 {organization}Fabrikam,而不是 {Fabrikam}

  • {organization} - 组织名称
  • {project} - 团队项目名称
  • {pipelinename} - 管道名称。 示例: Fabrikam hourly build pipeline
  • {startdate} - 开始报表的日期。 格式:YYYY-MM-DDZ。 示例: 2021-09-01Z 表示 2021 年 9 月 1 日。 不要将引号或括号括起来,并且对月份和日期使用两个数字。

查询明细

下表描述了查询的每个部分。

查询部件

描述


$apply=filter(

Start filter() 子句。

Pipeline/PipelineName eq '{pipelinename}'

返回特定管道的任务结果。

and PipelineRunCompletedOn/Date ge {startdate}

返回指定日期或之后管道运行的任务结果。

and PipelineRunOutcome eq 'Failed'

返回生成结果失败的任务结果。

and TaskOutcome eq 'Failed'

返回任务结果失败的任务结果。

)

Close filter 子句。

/groupby(

Start groupby() 子句。

(PipelineRunCompletedOn/Date, PipelineRunId, PipelineJob/StageName ),

按管道运行完成日期、生成 ID 和阶段名称进行分组。

aggregate (FailedCount with sum as FailedCount))

对于每天,生成 ID 和阶段;计算失败总数。 这将是任务失败的总数,而不是阶段失败。

/groupby(

Start groupby() 子句。

(PipelineRunCompletedOn/Date, PipelineJob/StageName ),

按天和阶段名称分组。

aggregate

Start aggregate 子句。

(cast(FailedCount gt 0, Edm.Int32) with sum as FailedStageCount))

对于每天,求和阶段失败的次数,然后关闭 aggregate 子句。

任务明智失败趋势

若要查看任务故障趋势,请使用以下查询。

可以将下面列出的 Power BI 查询直接粘贴到 “获取数据空白>查询 ”窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报表概述

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRunActivityResults?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and PipelineRunCompletedOn/Date ge {startdate} "
                &"and PipelineRunOutcome eq 'Failed' "
        &"and TaskOutcome eq 'Failed' "
        &") "
            &"/groupby( "
                &"(PipelineRunCompletedOn/Date, TaskDisplayName), "
                &"aggregate "
            &"(FailedCount with sum as FailedCount)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

作业明智失败趋势

若要查看作业故障趋势,请使用以下查询。

可以将下面列出的 Power BI 查询直接粘贴到 “获取数据空白>查询 ”窗口中。 有关详细信息,请参阅 使用 OData 查询的示例报表概述

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRunActivityResults?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and PipelineRunCompletedOn/Date ge {startdate} "
                &"and PipelineRunOutcome eq 'Failed' "
        &"and TaskOutcome eq 'Failed' "
        &") "
            &"/groupby( "
                &"(PipelineRunCompletedOn/Date, PipelineRunId, PipelineJob/JobName ), "
                &"aggregate (FailedCount with sum as FailedCount)) "
            &"/groupby( "
                &"(PipelineRunCompletedOn/Date, PipelineJob/JobName ), "
            &"aggregate "
        &"(cast(FailedCount gt 0, Edm.Int32) with sum as FailedJobCount)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(可选) 重命名查询

可以将默认查询标签 Query1 重命名为更有意义的标签。 只需在 “查询设置” 窗格中输入新名称。

Power BI 查询菜单选项的屏幕截图,重命名查询。

展开 Power Query 编辑器 中的列

在创建报表之前,需要展开以下两列。 若要了解如何展开工作项,请参阅 转换分析数据以生成 Power BI 报表

  • 展开 PipelineJobPipelineJob.StageName
  • 展开 PipelineRunCompletedOnPipelineRunCompletedOn.Date

更改列数据类型

在“ 转换 ”菜单中,将列的 FailedStageCount 数据类型更改为 整数。 若要了解如何操作,请参阅 转换列数据类型

(可选)重命名列字段

可以将列字段重命名为更便于用户使用的列字段。 例如,可以将列 Pipeline.PipelineName 重命名为 Pipeline NameTotalCount 重命名为 Total Count。 若要了解如何操作,请参阅 “重命名列字段”。

关闭查询并应用更改

完成所有数据转换后,从“开始”菜单中选择“关闭和应用”以保存查询并返回到 Power BI 中的“报表”选项卡。

Power Query 编辑器“关闭并应用”选项的屏幕截图。

创建堆积柱形图报表

  1. 在 Power BI 的“可视化效果”下,选择“堆积柱形图”报表。 以下示例假定没有人重命名任何列。

    “分阶段失败堆积柱形图”报表的可视化字段选择的屏幕截图。

  2. 添加到 PipelineRunCompletedOn.DateX 轴,右键单击它,然后选择 PipelineRunCompletedOn.Date,而不是 日期层次结构

  3. 添加到 FailedStagedCountY 轴 右键单击它,并确保 已选择 Sum

  4. 添加到PipelineJob.StageName图例

  5. 若要更改报表标题、图例或其他报表视觉对象,请从“可视化效果”窗格中选择“设置视觉画笔”图标的格式,然后调整一个或多个设置。

报表应如下图所示。

Power BI 管道示例分阶段失败列报表的屏幕截图。