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

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

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

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

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

重要

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

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

Note

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

前提条件

サンプル クエリ

このセクションのクエリでは、履歴データに基づいて作業項目のバーンダウン グラフを生成する方法を示します。 これらのクエリはすべて、エンティティ セットを指定します 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 サンプル リリース バーンダウン クラスター縦棒グラフ レポートのスクリーンショット。