OData クエリを使用して Power BI レポートを作成する

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

Power BI Desktop を使用すると、Azure DevOps でプロジェクトのレポートの作成を簡単に開始できます。

Power BI Desktop をお持ちでない場合は、 ダウンロードし 無料でインストールします。

前提条件

Power BI レポートを作成するには、次の条件を満たす必要があります。

  • プロジェクト メンバーになる。 そうでない場合は、今すぐ追加。 プロジェクトへのアクセス権を持つすべてのユーザー (利害関係者を除く) は、Analytics ビューを表示できます。
  • View Analytics アクセス許可を Allow に設定します。 Analytics アクセスに対するアクセス許可を参照してください。
  • Boards を有効にします。 Boards を再度有効にするには、「 Azure DevOps サービスを有効または無効にするを参照してください。
  • Power BI Desktop October 2018 Update 以降のバージョンを使用します。
  • 傾向レポートを生成する作業項目を一定期間追跡します。

Power BI クエリを作成する

次のように Power BI にデータをプルする Power BI クエリを作成します。

  1. [データの取得] を選択し、[クエリします。

    Power BI - 空のクエリを示すスクリーンショット。

  2. Power BI クエリ エディターで、[詳細エディター] を選択します。

    Power BI - 詳細エディターの選択を示すスクリーンショット。

  3. 詳細エディター ウィンドウが開きます。

    Power BI - 詳細エディターを示すスクリーンショット。

  4. 内容を次のクエリに置き換えます。

    let
       The query you provided has a syntax issue due to the placement of double quotes. Specifically, the `$apply` and `$orderby` parameters should be part of the URL string, but they are not correctly concatenated. Here is the corrected version:
    
    
let
   Source = OData.Feed (
      "https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/WorkItemSnapshot?"
      &"$apply=filter("
      &"WorkItemType eq 'Bug' "
      &"AND StateCategory ne 'Completed' "
      &"AND startswith(Area/AreaPath,'{areapath}') "
      &"AND DateValue ge {startdate} )/"
      &"groupby((DateValue,State,WorkItemType,Area/AreaPath), aggregate($count as Count))"
      &"&$orderby=DateValue",
      null, [Implementation="2.0", OmitValues = ODataOmitValues.Nulls, ODataVersion = 4]
   )
in
    Source

Power BI、詳細エディター、貼り付けクエリのスクリーンショット。

  1. サンプル クエリ内の値に置き換えます。

    サンプル クエリには、値に置き換える必要がある文字列があります。

    • {organization} - 組織名
    • {project} - チーム プロジェクト名。 または、プロジェクト間クエリの場合は、 /{project} を完全に省略します
    • {areapath} - エリア パス。 形式: Project\Level1\Level2
    • {startdate} - 傾向レポートを開始する日付。 形式: YYYY-MM-DDZ。 例: 2022-09-01Z は 2022 年 9 月 1 日を表します。 引用符で囲む必要はありません。

    Power BI、詳細エディター、クエリで置換された文字列のスクリーンショット。

  2. Done を選択してクエリを実行します。

    Power BI では、認証が必要になる場合があります。 詳細については、「 Client 認証オプション」を参照してください。

[領域]、[イテレーション]、[AssignedTo] 列の展開

このクエリでは、Power BI で使用する前に展開する必要がある複数の列が返されます。 $expand ステートメントを使用して取り込まれたエンティティは、複数のフィールドを含むレコードを返します。 エンティティをフィールドにフラット化するには、レコードを展開する必要があります。 このようなエンティティの例としては、 AssignedToIterationAreaがあります。

詳細エディターを閉じ、Power Query エディターに残っている間に、フラット化する必要があるエンティティの展開ボタンを選択します。

  1. たとえば、 Area の展開ボタンを選択し、展開するプロパティを選択して、 OKを選択します。 ここでは、フラット化する AreaNameAreaPath を選択します。 AreaName プロパティは、Node Name フィールドに似ています。

    Power BI 変換データの [Expand AreaPath] 列のスクリーンショット。

    Note

    選択できるプロパティは、クエリで返すように要求されたプロパティによって異なります。 プロパティを指定しない場合は、すべてのプロパティを使用できます。 これらのプロパティの詳細については、 AreasIterations、および Users のメタデータ参照を参照してください。

  2. テーブルにエンティティ フィールドが含まれるようになりました。

    展開された [領域] 列のスクリーンショット。

  3. 展開する必要があるエンティティを表すすべてのフィールドについて、手順 1 から 3 を繰り返します。 これらのフィールドは、 Record が展開されていない場合にテーブル列に表示されます。

フィールドとクエリの名前を変更し、[閉じて適用]

完了したら、列の名前を変更することもできます。

  1. 列ヘッダーを右クリックし、 Rename... を選択します。

    Power BI 変換データの [列の名前の変更] のスクリーンショット。

  2. また、クエリの名前を既定の Query1 から意味のあるものに変更することもできます。

    Power BI 変換データのスクリーンショット。クエリの名前変更。

  3. 完了したら、 Close & Apply を選択してクエリを保存し、Power BI に戻ります。

    Power BI Power Query エディター、[閉じる] および [適用] のスクリーンショット。

レポートを作成する

Power BI には、レポートできるフィールドが表示されます。

Note

次の例では、どの列も名前が変更されていないことを前提としています。 バグ傾向レポートの Power BI の [視覚化] と [フィールド] の選択のスクリーンショット。

単純なレポートの場合は、次の手順を実行します。

  1. [Power BI 視覚化] [折れ線グラフ] を選択します。
  2. フィールド "DateValue" を Axis に追加する
    • [DateValue] を右クリックし、[日付階層] ではなく [DateValue] を選択します
  3. フィールド "State" を Legend に追加する
  4. フィールド "Count" を Values に追加する
    • WorkItemId フィールドを右クリックし、 Sum が選択されていることを確認します

レポートの例:

サンプル バグ傾向折れ線グラフ レポートのスクリーンショット。

次のステップ