轉換分析資料以產生 Power BI 報告

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022

當你透過 OData 查詢或分析檢視將分析資料匯入 Power BI 後,原始資料通常需要先整形才能準備好提交報告。 實體欄位會以摺疊記錄的形式出現,日期可能以整數形式出現,空值則可能偏離計算結果。

本文介紹最常見的 Power Query 轉換方式:

  • 展開實體欄位(Area、AssignedTo、Iteration)及連結工作項目子項目
  • 將狀態類別透過樞紐分析轉換為計數欄位
  • 將十進位或整數欄位轉換為正確的資料型態
  • 將空值替換為零值
  • 新增計算欄位(例如完成百分比)
  • 欄位名稱重新命名以提高可讀性

小提示

你可以在本文後面使用 AI 來協助此任務,或參考 使用 Azure DevOps MCP Server 啟用 AI 協助 來開始。

先決條件

類別 要求
存取層級 - 專案成員。
- 至少 基本 權限。
許可權 根據預設,項目成員具有查詢分析及建立檢視的許可權。 如需有關服務與功能啟用和一般數據追蹤活動之其他必要條件的詳細資訊,請參閱 存取 Analytics的許可權和必要條件。

展開欄位

當你的 OData 查詢使用 $expand 來包含相關實體,如 Area、AssignedTo或 Iteration,這些實體會以摺疊的 Record 值進入 Power BI。 你必須展開每條紀錄以暴露其個別欄位。

在 Power Query 編輯器 中:

  1. 選擇顯示expand iconexpand icon記錄的欄位上的展開按鈕(),例如區域。 選擇你想要的屬性(例如 AreaName 和 AreaPath),然後選擇 確定。

    Power BI轉換資料截圖,展開 AreaPath 欄位。

    注意

    可選擇的物件取決於你查詢的物件類型。 如果你在查詢時沒指定屬性,所有屬性都可以用。 關於元資料細節,請參見 區域、 迭代與 使用者。

  2. 展開的欄位現在會以獨立欄位的形式出現在表格中。

    展開區域欄的螢幕截圖。

  3. 對每個顯示 Record 的欄位重複此步驟——例如 AssignedTo 和 Iteration。

展開後裔欄位

如果你的查詢回傳的是連結工作項目並包含彙總資料,後代欄位包含巢狀資料表。 展開它以存取例如State和TotalStoryPoints等欄位。

  1. 請選擇展開按鈕,在子項欄位中選擇要包含的欄位。

    Power BI 子項目欄位截圖.

  2. 選取所有欄位並選擇 確定。

    Power BI後裔欄位截圖,展開選項。

  3. 巢狀的表格被壓扁成獨立的欄位。

    Power BI 展開子代欄的截圖。

將 Descendants.StateCategory 欄位樞紐分析

展開後裔後,你可以樞軸 StateCategory 為每個狀態建立一欄——這對於百分比完成度計算非常有用。

  1. 選擇 Descendants.StateCategory 欄位標頭。

  2. 選擇 轉換>樞紐欄位。

    [轉換] 功能表、[樞紐列] 選項。

  3. 在 樞紐欄位 對話框中,將 Values 設為 並 Descendants.TotalStoryPoints 選擇 確定。 Power BI為每個狀態類別建立獨立欄位(例如Proposed、InProgress、Completed)。

    後代的樞軸欄位對話框。TotalStoryPoints 欄位。

當你的查詢包含工作項目連結時, 連結 欄位包含一個巢狀表格,你必須分兩階段展開。

  1. 在 連結 欄選擇展開按鈕,選擇所有欄位。

    截圖顯示 Power BI 連結欄及其展開選項。

  2. 在 Links.TargetWorkItem 欄位中選擇展開按鈕,並選擇你想要的目標屬性(例如 Title、 State、 WorkItemType)。

    Power BI Links.TargetWorkItem 欄位的截圖:展開選項。

注意

對於一對多或多對多關係,展開連結將為每個源工作項目建立多個列,每個連結一列。 例如,如果工作項目 #1 連結到工作項目 #2 和 #3,你會得到兩列工作項目 #1。

轉換欄位資料型態

將 LeadTimeDays 和 CycleTimeDays 轉換為整數

分析會以小數形式返回 LeadTimeDays 和 CycleTimeDays(例如,10.5 代表 10½ 天)。 大多數前置時間/週期時間報告會四捨五入到最接近的一天,因此這些欄位要轉換成整數。 小於1的值則變成0。

  1. 在Power Query 編輯器中,選擇Transform分頁。

  2. 選擇 LeadTimeDays 欄位標頭,然後選擇 資料型別>整數。

    Power BI 變換選單截圖,資料型別選擇。

  3. 重複CycleTimeDays。

將 CompletedDateSK 轉換為日期欄位

分析系統將 CompletedDateSK 以整數的 YYYYMMDD 格式儲存(例如,20220701 表示2022年7月1日)。 將它轉換成正確的 日期 類型,分兩步——整數轉成文字,再將文字轉成日期。

  1. 選取 CompletedDateSK 欄標頭。

  2. 選擇 資料類型>文字。 當「 變更欄位類型 」對話框出現時,選擇 新增步驟。

    Power BI變形選單的截圖,變更欄位類型對話框。

  3. 保持同一欄位,選擇 資料類型>日期。 在 「變更欄位類型 」對話框中,再次選擇 新增步驟 。

替換空值

像 故事點數 或 剩餘工作 這類欄位,若未輸入任何值,可能會包含空值。 零值會導致計算錯誤(例如,若某個百分比完成公式中任何分母項為零,則該公式失敗)。 在建立計算欄位前,先把它們替換成零。

Power BI表格的截圖,包含空值。

  1. 選擇欄位標題。
  2. 選擇 轉換>替換值。
  3. 在「替換值」對話框中,於null中輸入,並於0中輸入。
  4. 請選擇 [確定]。
  5. 對可能包含 null 的欄位重複此操作。

建立一個計算出的欄位

新增百分比完成度欄位

這很重要

在新增此欄位前,先替換所有樞軸狀態欄位的空值(見前文)。 任何空項都會讓公式回傳錯誤。

  1. 選擇 新增欄位>自訂欄位。

  2. 輸入PercentComplete新欄位名稱,並輸入以下公式:

    = [Completed]/([Proposed]+[InProgress]+[Resolved]+[Completed])
    

    自訂欄位對話框、PercentComplete 語法。

    注意

    如果你的工作項目沒有將狀態映射到 已解決 類別,請從公式中省略 [Resolved] 。

  3. 請選擇 [確定]。

  4. 選中新欄位後,選擇 「轉換>資料型別>百分比」。

重新命名欄

展開並轉換欄位後,將它們重新命名,使其在報告視覺化中可讀。

  1. 右鍵點擊欄位標頭並選擇 「重新命名」。

    Power BI 欄位重命名

  2. 輸入新標籤並按下 Enter 鍵。

關閉查詢並套用您的變更

完成所有資料轉換後,從主頁選單選擇關閉並套用。 此操作會儲存查詢,並返回 Power BI 中的 Report 分頁。

Power Query 編輯器關閉並套用選項的截圖。

利用 AI 在 Power BI 中轉換分析資料

如果你設定 Azure DevOps MCP Server,你可以使用 AI 助理,利用自然語言撰寫並優化 Power BI Analytics 報告的 OData 趨勢與快照查詢。

範例提示

任務 範例提示
按日期範圍劃分的問題趨勢 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,agent mode 對於撰寫和迭代 OData 趨勢查詢以便於分析 Power BI 報告特別有幫助。