Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
OData クエリまたは Analytics ビューを使用して Power BI に分析データをインポートした後、生データは多くの場合、レポートの準備が整う前に整形する必要があります。 エンティティ フィールドは折りたたまれたレコードとして到着し、日付は整数として表示され、null 値は計算を歪める可能性があります。
この記事では、最も一般的な Power Query 変換について説明します。
- エンティティ列 (Area、 AssignedTo、 Iteration) とリンクされた作業項目の子孫を展開する
- 状態カテゴリをカウント列にピボットする
- 10 進フィールドまたは整数フィールドを正しいデータ型に変換する
- null 値をゼロに置き換える
- 計算列の追加 (達成率など)
- 読みやすくするために列の名前を変更する
ヒント
この記事の後半でAI を使用してこのタスクに役立てる方法をご説明します。または、Azure DevOps MCP Server で AI サポートを有効にする方法を参照して作業を開始できます。
前提 条件
| カテゴリ | 必要条件 |
|---|---|
| アクセスレベル |
-
プロジェクト メンバー - 少なくとも ベーシック アクセス。 |
| アクセス許可 | 既定では、プロジェクト メンバーには Analytics にクエリを実行してビューを作成する権限があります。 サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「アクセス許可と、Analyticsにアクセスするための前提条件」を参照してください。 |
列の展開
OData クエリで $expand を使用して Area、 AssignedTo、 Iteration などの関連エンティティを含めると、それらのエンティティは折りたたまれた レコード 値として Power BI に到着します。 個々のフィールドを公開するには、各レコードを展開する必要があります。
Power Query エディターで次の手順を実行します。
expand icon[レコード] を表示する列の展開ボタン () を選択します (領域など)。 必要なプロパティ ( AreaNameやAreaPathなど) を選択し、[ OK] を選択します。
展開されたフィールドがテーブル内に個別の列として表示されるようになりました。
レコードを表示するすべての列に対して繰り返します — たとえば、AssignedTo および Iteration。
子孫列を展開する
クエリがロールアップ データを含むリンクされた作業項目を返す場合、[ 子孫 ] 列には入れ子になったテーブルが含まれます。 それを展開し、State や TotalStoryPoints などのフィールドにアクセスできるようにします。
[子孫] 列の [展開] ボタンを選択し、含めるフィールドを選択します。
すべての列を選択し、[ OK] を選択します。
入れ子構造のテーブルは、個別の列に平坦化されます。
Descendants.StateCategory 列をピボット化する
子孫を展開した後、 StateCategory をピボットして状態ごとに 1 つの列を作成できます。これは、達成率の計算に役立ちます。
Descendants.StateCategory 列ヘッダーを選択します。
変換>ピボット列 を選択します。
[ ピボット列 ] ダイアログで、[ 値 ] を [
Descendants.TotalStoryPointsに設定し、[ OK] を選択します。 Power BI では、状態カテゴリごとに個別の列が作成されます (例: Proposed、 InProgress、 Completed)。
[リンク] 列を展開する
クエリに作業項目リンクが含まれている場合、[ リンク ] 列には入れ子になったテーブルが含まれており、2 つのステージで展開する必要があります。
[リンク] 列の展開ボタンを選択し、すべてのフィールドを選択します。
Links.TargetWorkItem 列の展開ボタンを選択し、目的のターゲット プロパティ (Title、State、WorkItemType など) を選択します。
注意
一対多リレーションシップまたは多対多リレーションシップの場合、リンクを展開すると、ソース作業項目ごとに複数の行が作成されます。リンクごとに 1 行です。 たとえば、作業項目 #1 が作業項目 #2 と #3 にリンクしている場合、作業項目 #1 には 2 つの行が表示されます。
列データ型の変換
LeadTimeDays と CycleTimeDays を整数に変換する
分析では、 LeadTimeDays と CycleTimeDays が小数として返されます (たとえば、101/2 日間は 10.5)。 ほとんどのリード/サイクル時間レポートは最も近い日に丸められます。そのため、これらの列を整数に変換します。 1 未満の値は 0 になります。
Power Query エディターで、[ 変換 ] タブを選択します。
LeadTimeDays列ヘッダーを選択し、データ型>整数を選択します。
CycleTimeDaysに対して繰り返します。
CompletedDateSK を日付フィールドに変換する
分析では、CompletedDateSKYYYYMMDD形式の整数として格納されます (たとえば、2022 年 7 月 1 日の20220701)。 2 つのステップ (整数からテキスト、テキストから日付) で適切な 日付 型に変換します。
CompletedDateSK列ヘッダーを選択します。テキスト] を選択>。 [ 列の種類の変更 ] ダイアログが表示されたら、[ 新しいステップの追加] を選択します。
同じ列が選択された状態で、[ データ型>Date] を選択します。 [ 列の種類の変更 ] ダイアログで、[ 新しいステップの追加] をもう一度選択します。
null 値を置換する
ストーリー ポイントや残存作業時間などのフィールドには、値が入力されていない場合に null 値が含まれる場合があります。 Null を指定すると、計算でエラーが発生します (たとえば、分母項が null の場合、達成率の数式は失敗します)。 計算列を作成する前に、それらを 0 に置き換えます。
- 列ヘッダーを選択します。
- [変換] >[値の置換] を選択します。
-
値の置換 ダイアログで、
nullにを入力し、0にを入力します。 - [OK] を選択.
- null を含む可能性がある列ごとに、この操作を繰り返します。
計算列を作成する
進捗率の列を追加する
Important
この列を追加する前に、ピボット状態列のすべての null 値を置き換えます (前のセクションを参照)。 null 項を指定すると、数式はエラーを返します。
列の追加>カスタム列を選択します。
PercentComplete] に「」と入力し、次の数式を入力します。= [Completed]/([Proposed]+[InProgress]+[Resolved]+[Completed])
注意
作業項目の状態が 解決済 カテゴリにマップされていない場合は、数式から
[Resolved]を省略します。[OK] を選択.
新しい列を選択した状態で、変換>データ型>パーセンテージを選択します。
列名の変更
列を展開して変換したら、レポート ビジュアルで読み取ることができるように名前を変更します。
列ヘッダーを右クリックし、[ 名前の変更] を選択します。
新しいラベルを入力し、Enter キーを押します。
クエリを閉じて変更を適用する
すべてのデータ変換が完了したら、Home メニューから Close & Apply を選択してクエリを保存し、Power BI の Report タブに戻ります。
AI を使用して Power BI で分析データを変換する
Azure DevOps MCP Server を構成する場合は、AI アシスタントを使用して、自然言語を使用して Power BI Analytics レポートの OData 傾向クエリとスナップショット クエリを作成および最適化できます。
プロンプトの例
| Task | プロンプトの例 |
|---|---|
| 日付範囲別のバグの傾向 | Write an OData trend query that shows the daily bug count by state over the last 30 days in <ProjectName>. |
| スプリント スナップショット | Create an OData query against WorkItemSnapshot that shows work item counts grouped by date for the current sprint in <ProjectName>. |
| イテレーションによるフィルター処理 | Generate an OData trend query that uses the iteration start and end dates from <IterationName> to show story point burndown in <ProjectName>. |
| ボードのカラムのトレンド | Write an OData query against WorkItemBoardSnapshot to track work items by board column over the past two weeks in <ProjectName> in the <OrganizationName> organization. |
| パフォーマンスの最適化 | My WorkItemSnapshot trend query for <ProjectName> is timing out. Suggest specific date filters and aggregation to reduce the row count without losing the key metrics. |
| スプリントを比較する | Create an OData trend query that compares bug counts between <SprintName> and the previous sprint in <ProjectName> in the <OrganizationName> organization. |
| 残存作業時間の傾向 | Write an OData trend query that shows the daily sum of remaining work grouped by Area Path for the current iteration in <ProjectName>. |
| 状態の変化を検出する | Create an OData snapshot query that tracks how many work items moved from Active to Resolved each day over the past <NumberOfDays> days in <ProjectName>. |
| スコープ変更分析 | Generate an OData trend query that shows the daily count of user stories added or removed from <SprintName> by comparing WorkItemSnapshot data in <ProjectName>. |
ヒント
Visual Studio Code を使用している場合、 エージェント モード は、Analytics ベースの Power BI レポートの OData 傾向クエリの作成と反復処理に特に役立ちます。