リンクされた作業項目のサンプル クエリとレポートを一覧表示する

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

この記事では、他の作業項目にリンクされている作業項目を一覧表示するレポートを作成する方法について説明します。 たとえば、次のレポートは、親子リンクの種類を持つユーザー ストーリーにリンクされている機能の一覧を示しています。

フィーチャーとユーザー ストーリー テーブル レポートの親子リンクのスクリーンショット。

リンクの種類と作業項目のリンクの詳細については、「ユーザー ストーリー、問題、バグ、その他の作業項目をリンクする」を参照してください

その他のサンプル クエリには、別のバグへの重複リンクを含むバグの一覧表示や、別のバグへの重複リンクを含まないバグの一覧が含まれます。

Note

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

前提条件

サンプル クエリ

リンクされた作業項目をフィルター処理する方法を示すクエリがいくつか用意されています。 これらのクエリはすべて、現在のデータを WorkItems 返すエンティティ セットを指定します。

Note

フィルターまたはレポートの目的で使用できるプロパティを確認するには、「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/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Closed' and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') " 
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Child' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

  • {organization} - 組織名
  • {project} - プロジェクト間クエリの場合は、チーム プロジェクト名を指定するか、"/{project}" を完全に省略します
  • {areapath} - エリア パス。 形式の例: Project\Level1\Level2

クエリの内訳

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

クエリ パーツ

説明

$filter=WorkItemType eq 'Feature'

ユーザー ストーリーを返します。

and State ne 'Closed' and State ne 'Removed'

状態Closed または Removed に設定されているフィーチャーを省略します。

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

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

&$select=WorkItemId,Title,WorkItemType,State,AreaSK

返すフィールドを選択します。

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),

展開AssignedToIteration、およびエンティティに使用するフィールドをArea指定します。

Links(

エンティティを展開します Links

$filter=LinkTypeName eq 'Child'

リンクされた作業項目を、子リンクの種類のアイテムのみにフィルター処理します。 その他の例としては、親重複重複影響対象、影響を受けるものがあります。

and TargetWorkItem/WorkItemType eq 'User Story';

リンクされたユーザー ストーリーのみを含めます。

$select=LinkTypeName;

返す LinkTypeName プロパティを選択します。

$expand=TargetWorkItem($select=WorkItemType, WorkItemId, Title, State)

返すリンクされた作業項目のプロパティを選択します。

)

句を Links() 閉じます。

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Teams でフィルター処理されたリンクされたユーザー ストーリーを返す

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

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
    Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug') "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
            &"Links( "
                &"$filter=LinkTypeName eq 'Duplicate' "
                &"and TargetWorkItem/WorkItemType eq 'Bug'; "
                    &"$select=LinkTypeName; "
                &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
            &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
                &"and State ne 'Closed' "
                &"and startswith(Area/AreaPath,'{areapath}') "
                &"and not (Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug')) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
    ,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 レポートを生成する」を参照してください。

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

列を展開したら、1 つ以上のフィールドの名前を変更できます。 たとえば、列AreaPathArea Pathの名前を . データ テーブル ビューで名前を変更することも、後でレポートを作成するときに名前を変更することもできます。 方法については、「列フィールドの名前を変更する」を参照してください

この例では、次のフィールドの名前が変更されています。

元のフィールド名 名前の変更
Links.TargetWorkItem.ID ターゲット ID
LinksLinkTypeName リンクの種類
Links.TargetWorkItem.State ターゲットの状態
Links.TargetWorkItem.Title ターゲット タイトル

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

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

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

リンクされた作業項目を一覧表示するテーブル レポートを作成する

  1. Power BI で、[視覚化] の下の [テーブル レポート] を選択します

    親子リンク リスト テーブル レポートの Power BI の [視覚化] と [フィールド] の選択のスクリーンショット。

  2. 列に示されている順序で次のフィールドを 追加します

    • ID を選択し、右クリックして [集計しない] を選択 します。
    • State
    • Title
    • ターゲット ID を右クリックし、[集計しない] を選択 する
    • リンクの種類
    • ターゲットの状態
    • ターゲット タイトル

レポートの例が表示されます。

フィーチャーとユーザー ストーリー テーブル レポートのサンプル親子リンクのスクリーンショット。