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

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

異なるタスクが完了するまでにどのくらいの時間がかかりますか? この記事では、特定のパイプラインとそのタスクのレポートを生成できるクエリについて説明します。 たとえば、次の図は、2022 年 9 月 1 日から 12 月 15 日までの特定のパイプラインで完了したすべてのタスクの 50 パーセンタイル、80 パーセンタイル、95 パーセンタイルを秒単位で示しています。

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

重要

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

前提条件

  • 分析データを表示してサービスにクエリを実行するには、 Basic アクセス以上のプロジェクトのメンバーである必要があります。 既定では、すべてのプロジェクト メンバーには、Analytics のクエリと 分析ビューの定義に対するアクセス許可が付与されます。
  • サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件については、「 Analytics にアクセスするためのアクセス許可と前提条件」を参照してください。

Note

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

サンプル クエリ

エンティティ セットにクエリを PipelineRunActivityResults? 実行して、タスクの期間情報を返します。

Note

フィルターまたはレポートの目的で使用可能なプロパティを決定するには、Azure Pipelines のメタデータ リファレンスを参照してください。 クエリをフィルター処理したり、 で使用可能な または 値のPropertyEntityTypeNavigationPropertyBinding Pathの値のいずれかを使用してプロパティをEntitySet返したりできます。 各 は EntitySetEntityType対応します。 各値のデータ型の詳細については、対応する 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 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
        &"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
        &") "
            &"/compute( "
                &"percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds, "
                &"percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds, "
            &"percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds) "
                &"/groupby( "
            &"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName)) "
        &"&$orderby=TaskDuration50thPercentileInSeconds desc "
    ,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(

Start 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)

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

)

句を filter() 閉じます。

/compute(

Start compute() 句。

percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds,

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

percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds,

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

percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds)

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

/groupby(

句を開始します groupby()

(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName))

パイプライン実行のタスク別にグループ化し、計算日ごとの 50 パーセンタイル タスク期間、80 パーセンタイル タスク期間、および 95 パーセンタイル タスク期間を計算します。

&$orderby=TaskDuration50thPercentileInSeconds desc

最大 50 パーセンタイル期間を持つタスクごとに応答を並べ替えます。

(省略可能)クエリの名前を変更する

既定のクエリ ラベル Query1 の名前を、より意味のある名前に変更できます。 [ クエリ設定] ペインから新しい名前を入力するだけです。

Power BI クエリ メニュー オプションのスクリーンショット。クエリの名前を変更します。

列のデータ型を変更する

[変換] メニューから、次の列のデータ型を変更するDecimal Number**.方法については、「列データ型の変換」を参照してください
- TaskDuration80thPercentileInSeconds - TaskDuration80thPercentileInSeconds - TaskDuration95thPercentileInSeconds.

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

列フィールドの名前を変更できます。 たとえば、次の列の名前を変更して、表示しやすいようにすることができます。 方法については、「列フィールドの名前を変更する」を参照してください

元のフィールド名 名前が変更されたフィールド
TaskDisplayName タスク名
TaskDuration50thPercentileInSeconds 50 パーセンタイル
TaskDuration80thPercentileInSeconds 80 パーセンタイル
TaskDuration95thPercentileInSeconds 95 パーセンタイル

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

すべてのデータ変換が完了したら、[ホーム] メニューから [閉じる] & [適用] を選択してクエリを保存し、Power BI の [レポート] タブに戻ります。

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

テーブル レポートを作成する

  1. Power BI の [視覚化] で、テーブル レポートを選択します。 [列フィールドの名前の変更] セクションで 示されているように、フィールド の名前が変更されました。

    タスク期間テーブル レポートの視覚化フィールドの選択のスクリーンショット。

  2. 次のフィールドを、指定した順序で列に追加します。

    • タスク名
    • 50 パーセンタイル
    • 80 パーセンタイル
    • 95 パーセンタイル
  3. レポートのタイトルを変更するには、[視覚化] ウィンドウから [ビジュアル ペイント ブラシの書式設定] アイコンを選択し、[全般] を選択し、[タイトル]展開して、既存のテキストを置き換えます。

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

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