共用方式為


使用 Power BI 和 OData 查詢來連接資料

Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020

若要將數據提取至 Power BI,建議您使用開放式數據通訊協定 (OData) 查詢。 OData 是由結構化資訊標準促進組織 (OASIS) 制定並經國際標準化組織和國際電工委員會 (ISO/IEC) 批准的標準。 OData 定義了構建和使用 REST API 的最佳實踐。 如需詳細資訊,請參閱 OData 檔

若要快速入門,請參閱 使用 OData 查詢的示例報表概述。 如需其他方法的相關信息,請參閱 關於PowerBI整合

Power BI 可以執行 OData 查詢,以將篩選或匯總的數據集傳回 Power BI。 OData 查詢有兩個優點:

  • 所有篩選都會在伺服器端完成。 只會傳回您需要的數據,這會導致重新整理時間較短。
  • 您可以預先匯總資料伺服器端。 OData 查詢可以執行聚合,例如工作項匯總和生成失敗率。 彙總是在伺服器端完成的,並且僅將彙總值傳回至 Power BI。 通過使用預聚合,您可以跨大型數據集執行聚合,而無需將所有詳細數據提取到 Power BI 中。

在本教學課程中,您會:

  • 撰寫及測試 OData 查詢。
  • 從 Power BI 執行 OData 查詢。

必要條件

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

使用 Visual Studio Code 撰寫及測試 OData 查詢

撰寫及測試 OData 最簡單的方式是搭配 OData 延伸模組使用 Visual Studio Code Visual Studio Code 是 Windows、Mac 和 Linux 上可用的免費程式碼編輯器。 OData 延伸模組提供語法醒目提示和其他函式,這些函式適用於撰寫和測試查詢。

安裝 Visual Studio Code 和 OData 擴充功能

  1. 安裝 Visual Studio Code

  2. 開啟 Visual Studio Code,選取 [ 延伸模組],然後搜尋 odata。 在結果清單中,選擇 vscode-odata,然後安裝此擴展。

  3. 在 Visual Studio Code 中,通過創建擴展名為 .odata 的空檔來創建 OData 檔。 您可以隨意命名它,例如 filename.odata。 但它必須具有 .odata 擴展名才能啟用 OData 擴展功能。

撰寫 OData 查詢

撰寫 OData 查詢。 有關範例查詢,請參閱 使用 OData 查詢的範例報表概述

下列查詢會傳回特定區域路徑下的前10個工作專案。 要使用此查詢,請將、 {organization}{project} 取代為{area path}您的值。

https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?
      $select=WorkItemId,Title,WorkItemType,State,CreatedDate
      &$filter=startswith(Area/AreaPath,'{area path}')
      &$orderby=CreatedDate desc
      &$top=10

若要跨項目查詢,請完全省略 /{project}

如需詳細資訊,請參閱 範例報表和快速參考索引

在 Visual Studio Code 中撰寫查詢之後,您應該會看到語法醒目提示。

顯示 Visual Studio Code 中的 OData 檔案的螢幕截圖。每種類型的代碼元素都有自己的顏色。

測試 OData 查詢

  1. 若要測試 OData 查詢,請將游標放在查詢文字中的任意位置,然後選擇 「檢視>命令面板」。。

  2. 在搜索框中,輸入 odata 以顯示 OData 命令。

    顯示 Visual Studio Code OData 擴充功能的命令選擇區螢幕快照。

  3. 選取 OData:開啟。 此作將多行查詢合併為一行URL,運行查詢,並在預設瀏覽器中打開結果。

    • OData 查詢結果集為 JSON 格式。 要查看結果,請為您的瀏覽器安裝 JSON 格式化程式擴展。 Chrome 和 Microsoft Edge 都有數個選項可供使用。

      瀏覽器的螢幕截圖,其中顯示以可讀格式顯示的 OData 查詢的 JSON 輸出。

    • 如果查詢發生錯誤,Analytics 服務會以 JSON 格式傳回錯誤。 例如,以下錯誤指出查詢選擇不存在的欄位。

      以可讀格式顯示 JSON 輸出的瀏覽器的螢幕截圖。輸出中的消息指示 OData 查詢中存在錯誤。

確認查詢正常運作之後,您可以從 Power BI 執行查詢。

從 Power BI 執行 OData 查詢

若要從 Power BI 運行 OData 查詢,請按照以下部分中的步驟作。

將多行 OData 查詢結合成單行查詢

在 Power BI 中使用查詢之前,您必須將多行 OData 查詢轉換成單行查詢。 若要將 OData: Combine 命令用於此目的,請執行以下步驟:

  1. 創建包含多行查詢文字的 OData 檔案的副本。 建議使用此步驟,因為無法將單行查詢轉換回可讀的多行查詢。

  2. 在 Visual Studio Code 中,打開 OData 檔的副本,並將游標置於查詢文字中的任意位置。

  3. 選擇 檢視>命令調色盤。 在搜尋方塊中,輸入 odata。 然後在結果清單中,選取 [OData:合併]。

    多行查詢會轉換成單行查詢。

    Visual Studio Code 中 OData 檔的螢幕截圖。該檔包含一個多行查詢,後跟查詢的單行版本。

  4. 複製整行以供下一節使用。

從 Power BI 執行查詢

  1. 在 Power BI 中,選擇 「獲取數據>OData 源」。。 如需詳細資訊,請參閱 使用 OData 查詢建立 Power BI 報表。

    突出顯示了“獲取數據”和“OData 源”的 Power BI 螢幕截圖。

  2. 在 [ OData 摘要 ] 視窗中的 [URL ] 方塊中,貼上您在上一節中複製的 OData 查詢,然後選取 [ 確定]。

    OData 源對話框的屏幕截圖。URL 框包含單行 OData 查詢。

    Power BI 會顯示預覽頁面。

    Power BI 中預覽頁面的螢幕截圖,其中包含用於載入和轉換數據的按鈕。一個表列出了有關多個工作項的資訊。

指定查詢選項

  1. 在預覽頁上,選擇 “轉換數據” 以打開 Power Query 編輯器。

    Power Query 編輯器的屏幕截圖。一個表列出了多個工作項的 OData 源數據。

  2. 在功能區上,選擇 Advanced Editor(高級編輯器)。

    Power BI 功能區的屏幕截圖。高級編輯器 (Advanced Editor) 將高亮顯示。

  3. 在 Advanced Editor (高級編輯器) 視窗中,水平滾動以查看 [Implementation="2.0"] 查詢中的參數。

    Advanced Editor (高級編輯器) 視窗的屏幕截圖。查詢的結尾可見,並且 implementation 參數突出顯示。

  4. [Implementation="2.0"] 替換為以下字符串:

    [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]

    Advanced Editor (高級編輯器) 視窗的屏幕截圖。查詢的結尾是可見的。它包含替換字串並突出顯示。

    這項變更有助於防止限流錯誤。 新值具有以下效果:

    • 它們指示Power BI 引用 OData 版本 4。
    • 它們指示 Analytics 服務省略任何為 null 的值,從而提高查詢性能。

    Power Query 會針對它遇到的每個 Null 值產生另一個查詢,嘗試將 Null 值解析為錯誤。 此動作可能會導致數千個查詢。 這些查詢可以迅速超過您的使用量閾值,一旦超過,您的用戶帳戶將受到限制。

  5. 選取 [完成] 以關閉 進階編輯器,並返回 Power BI Power Query 編輯器。 您可以使用 Power Query 編輯器 來執行下列選擇性動作:

    • Query1 查詢重新命名為更具體的內容。
    • 將欄轉換為特定類型。 Power BI 會自動檢測類型,但你可能想要將列轉換為特定數據類型。
    • 新增計算欄位。
    • 移除欄。
    • 將數據行展開至特定欄位。

使用數據建立報表

選取 [ 關閉並套用 ] 以儲存您的設定,並將數據提取至 Power BI。 數據刷新后,您可以像通常在Power BI 中一樣創建報表。

Power BI 功能區的屏幕截圖。關閉並應用按鈕被高亮顯示。