次の方法で共有


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

Azure DevOps サービス |Azure DevOps Server |Azure DevOps Server 2022

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

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

注釈

この記事のサンプル クエリには、Analytics OData フィードv3.0-preview 以降が必要です。 フィードバックを共有します。

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

注釈

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

サンプル クエリ

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

注釈

フィルター処理またはレポートに使用できるプロパティについては、Azure Pipelines の Metadata リファレンスを参照してください。 クエリをフィルター処理したり、プロパティを返したりするには、Propertyで定義されている任意のEntityType値、またはNavigationPropertyBinding Pathに一覧表示されている任意のEntitySet値を使用します。 各 EntitySet は、各プロパティのデータ型を文書化する EntityTypeにマップされます。

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

  • {organization} - 組織名
  • {project} - チーム プロジェクト名
  • {pipelinename} - パイプライン名。 例: Fabrikam hourly build pipeline
  • {startdate} - レポートを開始する日付。 形式: YYYY-MM-DD 後に Z (UTC インジケーター) が続きます。 例: 2026-09-01Z は 2026 年 9 月 1 日を表します。 引用符または角かっこで囲む必要はありません。

クエリの内訳

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

クエリ部分

説明


$apply=filter(

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(

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 クエリ メニュー オプションのスクリーンショット。クエリの名前を変更します。

列のデータ型を変更する

[ 変換 ] メニューから、次の列のデータ型を 10 進数に変更します。 方法については、「 列のデータ型を変換するを参照してください。

  • TaskDuration50thPercentileInSeconds
  • TaskDuration80thPercentileInSeconds
  • TaskDuration95thPercentileInSeconds

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

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

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

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

すべてのデータ変換が完了したら、[ホーム] メニューから [閉じて適用] を選択します。 このアクションによりクエリが保存され、Power BIの Report タブに戻ります。

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

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

  1. Power BIの Visualizations で、Table レポートを選択します。 「列フィールドの名前を変更する」セクションの説明に 従って、フィールドの名前を変更 します。

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

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

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

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

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