スプリントバーンダウンのサンプル レポート

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

スプリントバーンダウンチャートは、チームがスプリント計画でどれだけうまく実行しているかを監視するのに役立ちます。 いくつかの組み込みのグラフとダッシュボード ウィジェットでは、スプリントバーンダウンの監視がサポートされています。 「スプリントバーンダウンの構成と監視」を参照してください。

ただし、この記事で提供されているクエリを使用して、Analytics と Power BI を使用してスプリント バーンダウン グラフをカスタマイズできます。 次の例は、ユーザー ストーリーとその状態のバーンダウンを示しています。

Power BI スプリントバーンダウンクラスター縦棒グラフ レポートのスクリーンショット。

重要

  • Area パスの削除または Iteration Paths の再構成により、元に戻せないデータ損失が発生します。 たとえば、 Area Paths が変更されたチームのバーンダウンおよびバーンアップ ウィジェット グラフ、スプリント バーンダウン、ベロシティ グラフでは、正確なデータは表示されません。 履歴傾向グラフは、作業項目ごとに定義された エリア パスIteration Path を参照します。 一度削除すると、これらのパスの履歴データを取得することはできません。
  • 削除できるのは、作業項目で使用されなくなった領域パスと反復パスのみです。

バーンダウンとバーンアップの詳細、および バーンダウンとバーンアップのガイダンスについては

Note

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

前提条件

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

サンプル クエリ

バーンダウン グラフでは、履歴データを取得するためにエンティティ セットの WorkItemSnapshot クエリを実行する必要があります。

注意

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

エリア パスと現在のイテレーションのバーンダウン ユーザー ストーリー

以下に示す Power BI クエリは、[ データの取得- 空の>クエリ ] ウィンドウに直接貼り付けることができます。 詳細については、「 OData クエリを使用したサンプル レポートの概要」を参照してください。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

置換文字列とクエリの内訳

次の文字列を実際の値に置き換えます。 置換に角かっこを {} 含めないでください。 たとえば、組織名が "Fabrikam" の場合は、 ではなく {Fabrikam}を にFabrikam置き換えます{organization}

  • {areapath} - エリア パス。 形式の例: Project\Level1\Level2

クエリの内訳

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

クエリ パーツ

説明


$apply=filter(

filter() の開始

WorkItemType eq 'User Story'

ユーザー ストーリーのバーンダウン

and startswith(Area/AreaPath,'{areapath}')

特定のエリア パスの下の作業項目。 を に Area/AreaPath eq '{areapath}' 置き換えると、特定のエリア パスにある項目が返されます。

チーム名でフィルター処理するには、filter ステートメントを使用します Teams/any(x:x/TeamName eq '{teamname})'

and StateCategory ne 'Completed'

完了したアイテムをフィルター処理します。 状態カテゴリの詳細については、「ワークフローの 状態と状態カテゴリ をバックログとボードで使用する方法」を参照してください。

and DateValue ge Iteration/StartDate

イテレーションの開始時に傾向を開始します。

and DateValue le Iteration/EndDate

イテレーション終了時の終了傾向。

and Iteration/StartDate le now()

[現在のイテレーション] を選択します。

and Iteration/EndDate ge now()

現在のイテレーションを選択する

)

filter() を閉じる

/groupby(

groupby() を開始する

(DateValue, State, WorkItemType, Priority, Area/AreaPath, Iteration/IterationPath),

DateValue でグループ化 (トレンドに使用)、およびレポートするフィールド

aggregate($count as Count, StoryPoints with sum as TotalStoryPoints)

ユーザー ストーリーの数とストーリー ポイントの合計で集計する

)

groupby() を閉じる

チームのバーンダウン ユーザー ストーリーと現在のイテレーション

このクエリは、エリア パスではなくチーム名でフィルター処理する点を除き、上記で使用したものと同じです。

以下に示す Power BI クエリは、[ データの取得- 空の>クエリ ] ウィンドウに直接貼り付けることができます。 詳細については、「 OData クエリを使用したサンプル レポートの概要」を参照してください。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

1 年の開始以降のすべてのスプリントのバーンダウン ユーザー ストーリー

すべてのスプリントのバーンダウンを 1 つのレポートで表示できます。 これらのクエリは、2022 年の初め以降のすべてのスプリントについて、スプリントバーンダウンとそのストーリー ポイントごとにプルされます。

以下に示す Power BI クエリは、[ データの取得- 空の>クエリ ] ウィンドウに直接貼り付けることができます。 詳細については、「 OData クエリを使用したサンプル レポートの概要」を参照してください。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate ge 2022-01-01Z "
        &") "
        &"/groupby( "
            &"(DateValue,Iteration/EndDate,Area/AreaPath,Iteration/IterationPath,State,WorkItemType,Priority,AreaSK), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

バーンダウン タスクと残存作業時間

以下に示す Power BI クエリは、[ データの取得- 空の>クエリ ] ウィンドウに直接貼り付けることができます。 詳細については、「 OData クエリを使用したサンプル レポートの概要」を参照してください。

Doc-ready Power BI Query (anonomized)
let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"startswith(Area/AreaPath,'{project}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
            &"and WorkItemType eq 'Task' "
        &") "
            &"/groupby( "
            &"(DateValue,State,WorkItemType,Activity,Priority,Area/AreaPath,Iteration/IterationPath,AreaSK), "
            &"aggregate($count as Count, RemainingWork with sum as TotalRemainingWork) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

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

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

レポートを作成する前に、複数のフィールドを含むレコードを返す列を展開する必要があります。 この例では、次のレコードを展開します。

  • Area
  • Iteration
  • AssignedTo

作業項目を展開する方法については、「 Analytics データを変換して Power BI レポートを生成する」を参照してください。

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

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

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

積み上げ縦棒グラフ レポートを作成する

  1. Power BI で、[視覚化] の [積み上げ縦棒グラフ ] レポート を選択します

    スプリント バーンダウン レポートの Power BI の視覚化とフィールドの選択のスクリーンショット。

  2. X 軸に追加DateValueし、右クリックして ではなく を選択DateValueします。Date Hierarchy

  3. [Y 軸] に を追加Countします。

  4. [Y 軸] に を追加Stateします。

サンプル レポートでは、ストーリー ポイントとストーリー数の両方にバーンダウンが表示されます。

Power BI スプリントのバーンダウン クラスター化縦棒グラフ レポートのサンプルのスクリーンショット。