Azure DevOps サービス |Azure DevOps Server |Azure DevOps Server 2022
開いているバグやユーザー ストーリーを一覧表示するレポートを生成するには、Power BIでマトリックス レポートを選択し、この記事で提供されているクエリと同様のクエリを使用します。 生成するレポートには、次の図に示すように、 State フィールドと Assigned To フィールド別に分類された未開のバグまたはユーザー ストーリーが一覧表示されます。
注釈
この記事では、OData クエリを使用したサンプル レポートの概要を読み、Power BIに関する基本的な理解があることを前提としています。
| カテゴリ | Requirements |
|---|---|
| アクセス レベル |
-
プロジェクトメンバー。 - 少なくとも ベーシック アクセス。 |
| アクセス許可 | 既定では、プロジェクト メンバーには Analytics にクエリを実行してビューを作成する権限があります。 サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「 Analytics にアクセスするためのアクセス許可と前提条件を参照してください。 |
サンプル クエリ
この記事では、バグやユーザー ストーリーをエリア パス、イテレーション パス、またはチームでフィルター処理するいくつかのクエリを提供します。 これらのクエリはすべて、履歴データではなく現在のエンティティ セットを返す WorkItems エンティティ セットを指定します。
注釈
フィルター処理またはレポートに使用できるプロパティを見つけるには、Azure Boardsの Propertyで定義されている任意のEntityType値、またはNavigationPropertyBinding Pathに一覧表示されている任意のEntitySet値を使用します。 各 EntitySet は、各プロパティのデータ型を文書化する EntityTypeにマップされます。
エリア パスでフィルター処理されたバグ
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 OData クエリを使用したサンプル レポートの概要を参照してください。
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Bug' "
&"and StateCategory ne 'Completed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
&"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
置換文字列とクエリの内訳
次の文字列を実際の値に置き換えます。 置換に波括弧 {} を含めないでください。 たとえば、組織名が "Fabrikam" の場合は、{organization}ではなく、Fabrikamを{Fabrikam}に置き換えます。
-
{organization}- 組織名 -
{project}- プロジェクト間クエリの場合は、チーム プロジェクト名を指定するか、"/{project}" を完全に省略します -
{areapath}- 領域パス。 形式の例:Project\Level1\Level2
クエリの内訳
次の表では、クエリの各部分について説明します。
クエリ部分
説明
$filter=WorkItemType eq 'Bug'
バグを返します。
and StateCategory ne 'Completed'
完了したアイテムをフィルターアウトします。 状態カテゴリの詳細については、「ワークフロー カテゴリの状態をAzure Boardsバックログとボードで使用する方法ɴ」を参照してください。
and startswith(Area/AreaPath,'{areapath}')
特定のエリア パスの下にある作業項目をフィルター処理します。 チーム名でフィルター処理するには、filter ステートメント Teams/any(x:x/TeamName eq '{teamname}')を使用します。
&$select=WorkItemId, Title, WorkItemType, State, Priority, Severity, TagNames
返すフィールドを選択します。
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)
展開可能なプロパティ フィールド AssignedTo、 Iteration、および Areaを選択します。
チーム別にフィルターされたバグ
複数のチームによる開いているバグを、エリア パスではなくクエリで調査できます。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 OData クエリを使用したサンプル レポートの概要を参照してください。
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Bug' "
&"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}')) "
&"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
&"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
特定のエリア パスと反復パス内のユーザー ストーリー
次のクエリでは、特定のエリア パスと反復パスに対するユーザー ストーリーのフィルター処理がサポートされています。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 OData クエリを使用したサンプル レポートの概要を参照してください。
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'User Story' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and startswith(Iteration/IterationPath,'{iterationpath}') "
&"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
&"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
(省略可能)クエリの名前を変更する
既定のクエリ ラベル Query1 の名前を、より意味のある名前に変更できます。 [クエリ設定] ペインから新しい名前を入力します。
Power Query エディターの列を展開する
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)句は、複数のフィールドを含むレコードを返します。 レポートを作成する前に、レコードを展開して特定のフィールドにフラット化する必要があります。 この例では、次のレコードを展開します。
AssignedToAreaIteration
詳細については、Transform Analytics データを参照してPower BIレポートを生成します。
(省略可能)列フィールドの名前を変更する
列フィールドの名前を変更して、わかりやすいものにすることができます。 方法については、「列フィールドの名前を変更」を参照してください。
クエリを閉じて変更を適用する
すべてのデータ変換が完了したら、[ホーム] メニューから [閉じて適用] を選択します。 このアクションによりクエリが保存され、Power BIの Report タブに戻ります。
マトリックス レポートを作成する
Power BIの Visualizations で、Matrix レポートを選択します。
Assigned Toを行に追加します。Stateを Columns に追加します。Values に
WorkItemIdを追加します。WorkItemIdを右クリックし、[カウント] が選択されていることを確認します。
レポートの例が表示されます。