次の方法で共有


パイプライン タスク期間の傾向のサンプル レポート

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

特定のパイプラインのタスクの完了にかかる時間を視覚化するには、傾向レポートを作成します。 たとえば、次の図は、2022 年 9 月 1 日から 12 月 15 日までの特定のパイプラインで完了したすべてのタスクの 80 パーセンタイルを秒単位で示しています。

Power BI Pipelines タスク期間の傾向レポートのスクリーンショット。

重要

Power BI 統合 Analytics Service の OData フィードへのアクセスは 、Azure DevOps Services および Azure DevOps Server 2020 以降のバージョンで一般提供されています。 この記事で提供されるサンプル クエリは、Azure DevOps Server 2020 以降のバージョンに対してのみ有効であり、 v3.0-preview 以降のバージョンによって異なります。 これらのクエリを使用し、フィードバックをお寄せください。

前提条件

  • Access:少なくとも Basic アクセス権を持つプロジェクトのメンバーである必要があります。
  • Permissions: 既定では、プロジェクト メンバーには Analytics にクエリを実行してビューを作成する権限があります。
  • サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「 Analytics にアクセスするためのアクセス許可と前提条件を参照してください。

Note

この記事では、 OData クエリを使用したサンプル レポートの概要 Power BI の基本的な理解があることを前提としています。

サンプル クエリ

PipelineRunActivityResults? エンティティ セットの次のクエリを使用して、異なるが類似したタスク期間傾向レポートを作成できます。

Note

フィルターまたはレポートの目的で使用可能なプロパティを確認するには、Azure Pipelines の Metadata リファレンスを参照してください。 クエリをフィルター処理したり、 で使用可能な または 値のPropertyEntityTypeNavigationPropertyBinding Pathの値のいずれかを使用してプロパティをEntitySet返したりできます。 各 は EntitySetEntityType対応します。 各値のデータ型の詳細については、対応する EntityTypeに指定されたメタデータを確認してください。

指定されたパイプライン名のタスク期間の傾向

次の Power BI クエリをコピーして、 Get Data>Blank クエリ ウィンドウに直接貼り付けます。 詳細については、「 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" の場合は、 ではなく {Fabrikam}を にFabrikam置き換えます{organization}

  • {organization} - 組織名
  • {project} - チーム プロジェクト名
  • {pipelinename} - パイプライン名。 例: Fabrikam hourly build pipeline
  • {startdate} - レポートを開始する日付。 形式: YYYY-MM-DDZ。 例: 2021-09-01Z は 2021 年 9 月 1 日を表します。 引用符または角かっこで囲んで、月と日付の両方に 2 桁の数字を使用しないでください。

クエリの内訳

次の表では、クエリの各部分について説明します。

クエリ パーツ

説明


$apply=filter(

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)

取り消された、スキップされた、または破棄されたパイプラインの実行を省略します。

)

filter() 閉じます。

/compute(

compute() 開始します。

percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)

各日について、フィルター条件に一致するすべてのタスクのタスク期間の 80 パーセンタイルを計算します。

/groupby(

groupby() 開始します。

(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))

パイプライン実行の完了日と計算日ごとの 80 パーセンタイル タスク期間でグループ化します。

&$orderby=PipelineRunCompletedOn/Date asc

完了した日付で応答を並べ替えます。

パイプラインのタスク期間の傾向、パイプライン ID の指定

パイプラインの名前を変更できます。 パイプライン名が変更されたときに Power BI レポートが中断されないようにするには、パイプライン名ではなくパイプライン ID を使用します。 パイプライン ID は、パイプラインの実行ページの URL から取得できます。

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

次の Power BI クエリをコピーして、 Get Data>Blank クエリ ウィンドウに直接貼り付けます。 詳細については、「 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 クエリをコピーして、 Get Data>Blank クエリ ウィンドウに直接貼り付けます。 詳細については、「 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

分岐でフィルター処理されたパイプラインのタスク期間の傾向

特定の ブランチのタスクの期間傾向を表示するには、次のクエリを使用します。 レポートを作成するには、次の手順を実行します。

次の Power BI クエリをコピーして、 Get Data>Blank クエリ ウィンドウに直接貼り付けます。 詳細については、「 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

すべてのパイプライン タスクのタスク期間の傾向

1 つのレポート内のすべてのパイプライン タスクのタスク期間の傾向を表示するには、次のクエリを使用します。 レポートを作成するには、次の手順を実行します。

次の Power BI クエリをコピーして、 Get Data>Blank クエリ ウィンドウに直接貼り付けます。 詳細については、「 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 BI クエリ メニュー オプションのスクリーンショット。クエリの名前を変更します。

Power Query エディターの列を展開する

レポートを作成する前に、複数のフィールドを含むレコードを返す列を展開する必要があります。 この場合は、 PipelineRunCompletedOn 列を展開して、 PipelineRunCompletedOn.Dateにフラット化します。
作業項目を展開する方法については、「 Analytics データを変換して Power BI レポートを生成する」を参照してください。

列のデータ型を変更する

Transform メニューから、TaskDuration80thPercentileInSeconds列のデータ型を Decimal Number に変更します。 方法については、「 列のデータ型を変換するを参照してください。

(省略可能)列フィールドの名前を変更する

列フィールドの名前を変更できます。 たとえば、列 TaskDuration80thPercentileInSeconds の名前を 80th Percentile に変更できます。 方法については、「 Rename 列フィールドを参照してください。

クエリを閉じて変更を適用する

すべてのデータ変換が完了したら、Home メニューから Close & Apply を選択してクエリを保存し、Power BI の Report タブに戻ります。

[閉じて適用] オプションPower Query エディタースクリーンショット。

折れ線グラフ レポートを作成する

  1. Power BI の Visualizations で、 折れ線グラフ レポートを選択します。

    タスク期間傾向折れ線グラフ レポートの視覚化フィールドの選択のスクリーンショット。

  2. X 軸にPipelineRunCompletedOn.Dateを追加。 フィールドを右クリックし、Date Hierarchy の代わりに PipelineRunCompletedOn.Date を選択します。

  3. TaskDuration80thPercentileInSecondsY 軸に追加し、右クリックして Sum が選択されていることを確認します。

  4. レポートのタイトルを変更するには、表示ペインから ビジュアルの書式設定ペイント ブラシ アイコンを選択し、General を選択し、Title を展開して、既存のテキストを置き換えます。

次の図は、結果のレポートを示しています。

Power BI Pipelines サンプル タスク期間傾向レポートのスクリーンショット。