管道持续时间示例报告

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

本文介绍如何获取管道持续时间或运行管道所需的时间。 此报表类似于管道持续时间报表的“管道持续时间”图表中的持续时间摘要指标。

下图显示了从 2022 年 9 月到 2022 年 12 月 15 日,所有管道运行的特定管道的持续时间报告示例。

Power BI 管道持续时间聚集列报表的屏幕截图。

重要

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

先决条件

  • Access:至少是具有基本访问权限的项目的成员。
  • 权限: 默认情况下,项目成员有权查询 Analytics 和创建视图。
  • 有关服务和功能启用和常规数据跟踪活动的其他先决条件的详细信息,请参阅 访问 Analytics 的权限和先决条件。

注意

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

示例查询

可以使用实体集的以下查询 PipelineRuns 来创建不同的但类似的管道持续时间报告。

注意

若要确定用于筛选器或报表目的的可用属性,请参阅 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/PipelineRuns?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds)) "
    ,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 CompletedDate ge {startdate}

返回管道在指定日期或之后运行。

and (SucceededCount eq 1 or PartiallySucceededCount eq 1)

仅返回成功或部分成功的运行。

)

Close filter() 子句。

/compute(

Start compute() 子句。

percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds,

计算与筛选器条件匹配的所有管道运行的第 50 百分位管道持续时间。

percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds,

计算与筛选器条件匹配的所有管道运行的第 80 百分位管道持续时间。

percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds)

计算与筛选条件匹配的所有管道运行的第 95 百分位管道持续时间。

/groupby(

Start groupby() 子句。

(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds))

按 、Duration80thPercentileInSecondsDuration95thPercentileInSeconds结束子句对响应Duration50thPercentileInSeconds进行groupby分组。

返回指定管道 ID 的百分位持续时间

可以重命名管道。 若要确保在更改管道名称时 Power BI 报表不会中断,请使用管道 ID 而不是管道名称。 可以从管道运行页的 URL 获取管道 ID。

https://dev.azure.com/{organization}/{project}/_build?definitionId= {pipelineid}

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

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"PipelineId  eq {pipelineid} "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

返回指定管道的百分位持续时间,按分支进行筛选

若要仅查看特定 分支 的管道持续时间,请使用以下查询。 若要创建报表,请执行以下额外步骤以及“更改列数据类型”和“创建聚集柱形图报表”部分中所述的内容。

  • 展开 BranchBranch.BranchName
  • 将 field Branch.BranchName 添加到 X 轴

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

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5, BranchSK) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8, BranchSK) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95, BranchSK) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds, Branch/BranchName)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

返回所有项目管道的百分位持续时间

若要查看单个报表中项目的所有管道的持续时间,请使用以下查询。 若要创建报表,请执行以下额外步骤以及“更改列数据类型”和“创建聚集柱形图报表”部分中所述的内容。

  • 展开 PipelinePipeline.PipelineName
  • 将字段 PIpeline.PipelineName 添加到 X 轴

请参阅此处所需详细类似步骤的示例报表的所有管道 的结果摘要。

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

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
                &"    ) "
        &"/compute( "
        &"percentile_cont(TotalDurationSeconds, 0.5, PipelineId) as Duration50thPercentileInSeconds, "
            &"percentile_cont(TotalDurationSeconds, 0.8, PipelineId) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95, PipelineId) as Duration95thPercentileInSeconds) "
                &"/groupby( "
            &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds, Pipeline/PipelineName)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

更改列数据类型

从“ 转换 ”菜单中,将以下列的数据类型更改为 十进制数字。 若要了解如何操作,请参阅 转换列数据类型

  • Duration50thPercentileInSeconds
  • Duration80thPercentileInSeconds
  • Duration95thPercentileInSeconds

(可选)重命名列字段

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

关闭查询并应用更改

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

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

创建簇状柱形图报表

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

    Power BI 管道聚集列可视化效果和字段选择的屏幕截图。

  2. 将以下字段添加到 Y 轴,右键单击每个字段并确保 已选择 Sum

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

报表应如下图所示。

Power BI 示例管道持续时间聚集列报表的屏幕截图。