カスタム分析ビューを使用してチームでフィルター処理された Power BI レポートを作成する
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
分析ビューでは、チームに基づいて作業項目をフィルター処理するためのフィールド条件がサポートされます。 ただし、Power BI レポートのフィルター処理をサポートするために使用できるチーム固有のフィールドはありません。 各作業項目は特定のエリア パスに関連付けられますが、エリア パスは複数のチームに関連付けることができます。 この一対多の関連付けのため、Analytics ではチーム固有のフィールドは提供されません。
ただし、この記事に記載されている手順を使用して、チームに対してフィルター処理を行うことができます。 一般的なプロセスでは、 Analytics ビュー と teams エンティティの間にマッピング テーブルが導入されます。
Note
同様に、Analytics ビュー内の作業項目のボード固有の列を決定する際に制限があります。 ただし、この記事で説明するガイダンスは、ビューで選択した履歴データへの依存関係のため、ボードの場所では機能しません。
前提条件
- アクセス レベル: Basic 以上のプロジェクトのメンバーである必要があります。
- Permission: 既定では、プロジェクト メンバーは Analytics にクエリを実行してビューを作成する権限を持ちます。
- サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「 Analytics にアクセスするためのアクセス許可と前提条件を参照してください。
分析ビューに AreaSK フィールドを追加する
既定の分析ビューに含まれる既定のフィールドには、Power BI でリレーションシップ マッピングを作成するために必要なフィールドは含まれません。 次の手順を使用して、モデルにマッピング テーブルを導入し、チームでのフィルター処理をサポートするために必要なリレーションシップを構築します。
- Analytics ビューを編集 します。
- [ Field タブで、 AreaSK フィールドを追加します。
- 更新されたビューを保存します。
- Power BI Desktop の Analytics ビューに関連付けられている Power BI pbix ファイルを読み込みます。
- ビューを更新し、 AreaSK フィールドが想定どおりに表示されることを確認します。
チームのテーブルを追加する
次の手順では、power BI データ モデルに Teams エンティティを追加し、Power BI でリレーションシップを作成するために必要なマッピング テーブルを生成します。 このプロセスでは、Power Query エディターを使用して 3 つのクエリを追加する必要があります。
Power BI Desktop で、ビューに関連付けられている Power BI pbix ファイルを読み込みます。
[データの取得を選択します。
[クエリオプションを選択します。
詳細エディターを開きます。
次のクエリ コードを追加し、Analytics ビューに合わせて組織情報とチーム名を置き換えます。
let #"Get table" = VSTS.Feed("https://analytics.dev.azure.com/{OrganizationName}/_odata/v2.0/Teams?$select=TeamName,TeamSK&$filter=TeamName eq '{TeamName1}' or TeamName eq '{TeamName2}"), #"Select columns" = Table.SelectColumns(#"Get table", {"TeamName", "TeamSK"}) in #"Select columns"
クエリの名前を Teams に変更します。
[ ホーム ] タブ [新しいソース] を選択して 別の空のクエリを追加し、 Areas に名前を変更します。
詳細エディター開き、次のクエリ コードを追加して、ビューに合わせて組織の情報を置き換えます。
let #"Get table" = VSTS.Feed("https://analytics.dev.azure.com/{OrganizationName}/_odata/v2.0/Areas?$select=AreaName,AreaSK"), #"Select columns" = Table.SelectColumns(#"Get table", {"AreaName", "AreaSK"}) in #"Select columns"
[Home] タブで[新しいソースを選択して別の空のクエリを追加し、名前を AreaToTeam に変更します。
詳細エディター開き、次のクエリ コードを追加して、ビューに合わせて組織の情報を置き換えます。
let #"Get table" = VSTS.Feed("https://analytics.dev.azure.com/{OrganizationName}/_odata/v2.0/Areas?$select=AreaSK&$expand=Teams($select=TeamSK)"), #"Select columns" = Table.SelectColumns(#"Get table", {"AreaSK", "Teams"}), #"Expand Teams" = Table.ExpandTableColumn(#"Select columns", "Teams", {"TeamSK"}, {"TeamSK"}) in #"Expand Teams"
重要
3 つのクエリを追加するプロセスは、1,000 チーム以下にマップされるエリア パスでのみ機能します。
[ホーム] タブで、[閉じる] & [適用を選択します。
次に、 Refresh を選択して AreaSK をビューに追加します。
Power BI リレーションシップ マッピングを作成する
最後の手順では、Power BI で必要なリレーションシップを作成します。
Relationships ビューを開きます。
Home タブで、リレーションシップの管理を開きます。
[リレーションシップの管理] ダイアログで、次の手順を実行します。
a. 自動的に検出された可能性のあるリレーションシップを削除します。
b. Newを選択して、ViewとAreaの間に双方向のMany to Oneリレーションシップを作成します。 詳細については、「 Power BI Desktop での DirectQuery を使用した双方向クロスフィルター処理を参照してください。Areas と AreaToTeam の間に双方向One to Manyリレーションシップを作成します。
AreaToTeam と Teams の間に、双方向の Many to One リレーションシップを作成します。
Report ビューに戻り、TeamName および TeamSK フィールドのコンテキスト メニューを開き、Hide オプションを選択します。
View および Team テーブルで対応する SK を非表示にします。
チームのレポート ビューをフィルター処理する
マッピングが設定されたので、 Teamsに基づいてレポート ビューをフィルター処理できます。 まず、 Team Name に基づいてレポートにスライサーを追加します (必要に応じて空白を削除します)。
これで、Power BI でスライサーまたはその他のサポートされているフィルター機能を使用して、レポートのすべての視覚化をフィルター処理できるようになりました。