管線工作持續時間趨勢範例報告
Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
若要將工作完成特定管線所需的時間可視化,您可以建立趨勢報表。 例如,下圖顯示 2022 年 9 月 1 日至 12 月 15 日針對特定管線完成的所有工作,以秒為單位的第 80 個百分位數。
重要
Azure DevOps Services 和 Azure DevOps Server 2020 和更新版本的 Power BI 整合 和存取 Analytics Service 的 OData 摘要 已正式推出。 本文中提供的範例查詢僅適用於 Azure DevOps Server 2020 和更新版本,且相依於 v3.0-preview 或更新版本。 我們鼓勵您使用這些查詢並提供意見反應。
必要條件
- 存取:至少是具有基本存取權的項目成員。
- 許可權: 根據預設,項目成員具有查詢分析及建立檢視的許可權。
- 如需有關服務與功能啟用和一般數據追蹤活動之其他必要條件的詳細資訊,請參閱 存取分析的許可權和必要條件。
注意
本文假設您已閱讀 使用 OData 查詢 的範例報表概觀,並具備 Power BI 的基本瞭解。
範例查詢
您可以使用實體集的 PipelineRunActivityResults?
下列查詢來建立不同的但類似的工作持續時間趨勢報告。
注意
若要判斷篩選或報表用途的可用屬性,請參閱 Azure Pipelines 的元數據參考。 您可以使用的 或 NavigationPropertyBinding Path
值EntitySet
底下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 TaskDisplayName eq '{taskname}' "
&"and PipelineRunCompletedOn/Date ge {startdate} "
&"and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&" ) "
&"/compute( "
&"percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,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 TaskDisplayName eq '{taskname}'
傳回特定工作的工作結果。
and PipelineRunCompletedOn/Date ge {startdate}
傳回管線在指定日期或之後執行的工作結果。
and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded')
只傳回成功或部分成功的管線執行的工作結果。
and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1)
省略已取消、略過或已放棄的管線執行。
)
Close filter()
子句。
/compute(
Start compute()
子句。
percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)
針對每天,計算所有符合篩選準則之工作工期的第80個百分位數。
/groupby(
Start groupby()
子句。
(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))
依管線執行完成日期分組,並計算出第80個百分位數的工作工期。
&$orderby=PipelineRunCompletedOn/Date asc
依完成日期排序回應。
管線的工作持續時間趨勢,指定管線標識符
管線可以重新命名。 若要確保Power BI報表不會在管線名稱變更時中斷,請使用管線標識碼,而不是管線名稱。 您可以從管線執行頁面的 URL 取得管線識別碼。
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/PipelineRunActivityResults?"
&"$apply=filter( "
&"Pipeline/PipelineId eq {pipelineid} "
&"and TaskDisplayName eq '{taskname}' "
&"and PipelineRunCompletedOn/Date ge {startdate} "
&"and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&") "
&"/compute( "
&"percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
管線的第 50、80 和第 90 個百分位數工作持續時間趨勢
若要檢視使用其他百分位數值計算的工作工期趨勢,請使用下列查詢來提供第 50 個和 95 個百分位數的工作工期,以及第 80 個百分位數。
將下列 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 TaskDisplayName eq '{taskname}' "
&"and PipelineRunCompletedOn/Date ge {startdate} "
&"and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&") "
&"/compute( "
&"percentile_cont(ActivityDurationSeconds, 0.5, PipelineRunCompletedDateSK) as TaskDuration50thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.95, PipelineRunCompletedDateSK) as TaskDuration95thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds, TaskDuration95thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
依分支篩選之管線的工作持續時間趨勢
若要檢視特定 分支的工作持續時間趨勢,請使用下列查詢。 若要建立報表,請執行下列步驟:
- 展開
Branch
至Branch.BranchName
- 變更數據行數據類型
- 建立折線圖報表
- 從 [視覺效果] 窗格中選取交叉分析篩選器,並將 新增
Branch.BranchName
至交叉分析篩選器的欄位 - 從交叉分析篩選器中選取需要查看工作持續時間趨勢的分支。
將下列 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 TaskDisplayName eq '{taskname}' "
&" and PipelineRunCompletedOn/Date ge {startdate} "
&" and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&" and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&" ) "
&"/compute( "
&" percentile_cont(ActivityDurationSeconds, 0.8, BranchSK, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&" (TaskDuration80thPercentileInSeconds, Branch/BranchName, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
所有管線工作的工作持續時間趨勢
若要檢視單一報表中所有管線工作的工作持續時間趨勢,請使用下列查詢。 若要建立報表,請執行下列步驟:
- 變更數據行數據類型
- 建立折線圖報表
- 從 [視覺效果] 窗格中選取交叉分析篩選器,並將 新增
TaskDisplayName
至交叉分析篩選器的欄位 - 從交叉分析篩選器中選取您需要查看工作持續時間趨勢的工作。
將下列 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 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&") "
&"/compute( "
&"percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, TaskDisplayName, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
(選擇性)重新命名查詢
您可以將預設查詢標籤 Query1 重新命名為更有意義的專案。 只要從 [ 查詢設定 ] 窗格輸入新名稱即可。
展開 Power Query 編輯器 中的數據行
建立報表之前,您必須展開傳回包含數個字段之記錄的數據行。 在這裡實體中,您要展開資料 PipelineRunCompletedOn
行,將其扁平化為 PipelineRunCompletedOn.Date
。
若要瞭解如何展開工作專案,請參閱 轉換分析數據以產生Power BI報表。
變更數據行數據類型
從 [ 轉換 ] 功能表中,將數據行的 TaskDuration80thPercentileInSeconds
數據類型變更為 [十進位數]。 若要瞭解如何,請參閱 轉換數據行數據類型。
(選擇性)重新命名數據行欄位
您可以重新命名資料列欄位。 例如,您可以將資料列 TaskDuration80thPercentileInSeconds
重新命名為 80th Percentile
。 若要瞭解如何,請參閱 重新命名數據行欄位。
關閉查詢並套用您的變更
完成所有數據轉換之後,請從 [常用] 功能表選擇 [關閉及套用],以儲存查詢並返回 Power BI 中的 [報表] 索引卷標。
建立折線圖報表
在 Power BI 的 [視覺效果] 下,選擇折線圖報表。
新增
PipelineRunCompletedOn.Date
至 X 軸。 以滑鼠右鍵按下字段,然後選擇 [PipelineRunCompletedOn.Date] 取代 [日期階層]。新增
TaskDuration80thPercentileInSeconds
至 Y 軸,並以滑鼠右鍵按兩下它,以確保 已選取 [總和 ]。若要變更報表標題,請從 [視覺效果] 窗格中選取 [格式化您的視覺油漆筆刷] 圖示,選取 [一般],展開 [標題],然後取代現有的文字。
下圖顯示產生的報表。