次の方法で共有


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

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 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 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(

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

列のデータ型を変更する

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

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

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

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

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

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

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

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

  1. Power BI の Visualizations で、 Table レポートを選択します。 フィールドの名前は、 Rename 列フィールド セクションで示されているように変更されました。

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

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

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

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

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