バーンダウン のサンプル クエリとレポートをリリースする

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

バーンダウンレポートとバーンアップレポートには、時間の経過と同時に完了している作業量が表示されます。 次の図は、ユーザー ストーリーの数とストーリー ポイントの合計によるバーンダウンの両方を示しています。

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

バーンダウン グラフは、グラフの期間の作業を計画する場合にのみ意味があります。 それ以外の場合、スプリント単位で計画している場合、標準バーンダウンは表示されません。 これらのインスタンスでは、バーンアップ グラフは、時間の経過に伴う進行状況を確認する方が理にかなっています。

重要

エリア パスを削除したり、反復パスを再構成したりすると、データが失われ、元に戻すことはできません。 たとえば、 エリア パス が変更されたチームのバーンダウンまたはバーンアップ ウィジェット グラフ、スプリント バーンダウン、ベロシティ グラフは、正しいデータを反映しません。 履歴傾向グラフは、各作業項目の過去のポイントで定義されている エリア パス反復パス を参照します。 エリア パスまたは反復パスが削除されると、その履歴データを取得できません。

バーンダウンとバーンアップの詳細については、バーンダウンまたはバーンアップ ウィジェットの構成とバーンダウンとバーンアップのガイダンスを参照してください。

Note

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

前提条件

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

サンプル クエリ

このセクションのクエリでは、履歴データに基づいて作業項目のバーンダウン グラフを生成する方法を示します。 これらのクエリはすべて、エンティティ セットを指定します WorkItemSnapshot

Note

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

開始日と終了日からのエリア パス内のユーザー ストーリーのバーンダウン

次のクエリは、リリース タグでタグ付けされた作業項目に基づいて、リリースのユーザー ストーリーの履歴データを返す方法を示しています。

Note

タグのフィルター処理に基づくレポートの場合、リリースの開始時またはバーンダウン/バーンアップ開始日にタグを作業項目に割り当てる必要があります。 それ以外の場合、作業項目は返されたデータに含まれません。

以下に示す 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

  • {organization} - 組織名
  • {project} - プロジェクト間クエリの場合は、チーム プロジェクト名を指定するか、"/{project}" を完全に省略します
  • {areapath} - エリア パス。 形式の例: Project\Level1\Level2
  • {tag} - リリースを表すタグ。 タグ付けされたすべての {tagname} 作業項目がレポートに含まれます
  • {startdate} - バーンダウン レポートを開始する日付を次の形式で指定します YYYY-MM-DDZ。 たとえば、 2022-04-01Z 2022 年 4 月 1 日を表します。 引用符で囲む必要はありません。
  • {enddate} - バーンダウン レポートを終了する日付。

クエリの内訳

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

クエリ パーツ

説明

$apply=filter(WorkItemType eq 'User Story'

バーンダウンにユーザー ストーリーを含める。

and StateCategory ne 'Completed'

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

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

特定 のエリア パス の置き換えの下にユーザ ストーリーのみを含めます '{areapath}'
チーム名でフィルター処理するには、filter ステートメントを使用します Teams/any(x:x/TeamName eq '{teamname})'

and Tags/any(x:x/TagName eq '{tagname}').

バーンダウンするリリースを表し、{tagname} でタグ付けされたすべての作業項目をレポートに含めるタグ ラベルを指定します。

and DateValue ge {startdate}

指定した日付以降にバーンダウンを開始します。 例: 2019-04-01Z は 2019-April-01 を表します。

and DateValue le {enddate}

指定した日付以前にバーンダウンを開始します。 {startdate} と同じ形式です。

)

Close filter() 句。

/groupby (

Start groupby() 句。

(DateValue, State, Area/AreaPath),

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

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

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

)

Close 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 StateCategory ne 'Completed' "
            &"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 Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

毎週金曜日にスナップショットを使用してユーザー ストーリーをバーンダウンする

週単位のスナップショットを使用すると、Power BI に取り込まれるデータの量が減り、クエリのパフォーマンスが向上します。

以下に示す 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

エリアと反復パスに基づくバーンダウン ユーザー ストーリー

一部の組織では、イテレーション パスを使用してリリースのストーリーをマークします。 たとえば、MyProject\Release1反復パスがあるとします。 次のクエリは、反復パスでユーザー ストーリーを選択する方法を示しています。

以下に示す 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

ユーザー設定フィールド値を持つバーンダウン ユーザー ストーリー

一部の組織では、ユーザー 設定フィールドを使用してリリースのユーザー ストーリーをマークします。 たとえば、マイルストーンというフィールドがあるとします。 このクエリでは、ユーザー 設定フィールドでユーザー ストーリーを選択する方法を示します。

クエリの両方{customfieldname}{releasevalue}を置き換える必要があります。 ユーザー設定フィールドの名前を確認するには、Azure Boards のメタデータ リファレンス、カスタム プロパティに関するページを参照してください。 たとえばCustom_Milestone、カスタム プロパティ名に置き換えます{customfieldname}

以下に示す 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

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

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

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

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

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

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

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

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

クラスター化縦棒グラフを作成する

  1. Power BI で、[視覚化] で [クラスター化縦棒グラフ] を選択します

    リリース バーンダウン クラスター縦棒グラフ レポートの Power BI の [視覚化] と [フィールド] の選択のスクリーンショット。

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

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

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

このレポートの例では、ストーリーの数と合計または ストーリー ポイントの両方にバーンダウンが表示されます。

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