共用方式為


教學課程:從 Jupyter Notebook 擷取並計算 Power BI 量值

本教學課程會說明如何使用 SemPy (預覽) 來計算語意模型 (Power BI 資料集) 中的量值。

在本教學課程中,您會了解如何:

  • 透過語意連結 Python 庫 (SemPy) 的 Python 介面,以程式設計方式評估 Power BI 量值。
  • 熟悉 SemPy 的元件,這些元件有助於彌合 AI 與 BI 之間的差距。 這些元件包括:
    • FabricDataFrame - 使用其他語意資訊增強的 Pandas 類似結構。
    • 可讓您擷取語意模型的實用函數,包括未經處理資料、組態和量值。

必要條件

  • 從左側瀏覽窗格中選取 [工作區],以尋找並選取您的工作區。 此工作區會成為您目前的工作區。

  • 下載 Retail Analysis Sample PBIX.pbix 語意模型,並將其上傳至您的工作區。

在筆記本中跟著做

本教學課程會隨附 powerbi_measures_tutorial.ipynb 筆記本。

若要開啟本教學課程隨附的筆記本,請遵循為資料科學教學課程準備系統中的指示,將筆記本匯入您的工作區。

如果您想要複製並貼上此頁面中的程式碼,則可以建立新的筆記本

開始執行程式碼之前,請務必將 Lakehouse 連結至筆記本

設定筆記本

在本章節中,您會使用必要的模組和資料來設定筆記本環境。

  1. 使用筆記本內的 %pip 內嵌安裝功能從 PyPI 安裝 SemPy

    %pip install semantic-link
    
  2. 對稍後需要的模組執行必要的匯入:

    import sempy.fabric as fabric
    
  3. 您可以連線至 Power BI 工作區。 列出工作區中的語意模型:

    fabric.list_datasets()
    
  4. 載入語意模型。 在本教學課程中,您會使用 Retail Analysis Sample PBIX 語意模型:

    dataset = "Retail Analysis Sample PBIX"
    

列出工作區量值

使用 SemPy 的 list_measures 函數列出語意模型中的量值,如下所示:

fabric.list_measures(dataset)

評估量值

在本章節中,您會使用 SemPy 的 evaluate_measure 函數,以各種方式評估量值。

評估未經處理量值

在下列程式碼中,使用 SemPy 的 evaluate_measure 函數來計算稱為「平均銷售區域大小」的預先設定量值。 您可以在前一個儲存格的輸出中看到此量值的基礎公式。

fabric.evaluate_measure(dataset, measure="Average Selling Area Size")

使用 groupby_columns 評估量值

您可以藉由提供額外的參數 groupby_columns,依特定資料列對量值輸出進行分組:

fabric.evaluate_measure(dataset, measure="Average Selling Area Size", groupby_columns=["Store[Chain]", "Store[DistrictName]"])

在前一個程式碼中,您會依語意模型中 Store 資料表的資料行 ChainDistrictName 進行分組。

使用篩選條件評估量值

您也可以使用 filters 參數來指定結果可以為特定資料列所包含的特定值:

fabric.evaluate_measure(dataset, \
                        measure="Total Units Last Year", \
                        groupby_columns=["Store[Territory]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]})

在前一個程式碼中,Store 是資料表的名稱、Territory 是資料行的名稱,而且 PA 是篩選條件允許的其中一個值。

評估多個資料表的量值

您可以依跨越語意模型中多個資料表的資料行來對量值進行分組。

fabric.evaluate_measure(dataset, measure="Total Units Last Year", groupby_columns=["Store[Territory]", "Sales[ItemID]"])

評估多個量值

函數 evaluate_measure 可讓您提供多個量值的識別碼,並輸出相同 DataFrame 中的計算值:

fabric.evaluate_measure(dataset, measure=["Average Selling Area Size", "Total Stores"], groupby_columns=["Store[Chain]", "Store[DistrictName]"])

使用 Power BI XMLA 連接器

預設語意模型用戶端是由 Power BI 的 REST API 提供支援。 如果使用此用戶端執行查詢時發生任何問題,可以使用 將後端切換至 Power BI 的 XMLA 介面 use_xmla=True。 使用 XMLA 進行量值計算時,SemPy 參數會保持不變。

fabric.evaluate_measure(dataset, \
                        measure=["Average Selling Area Size", "Total Stores"], \
                        groupby_columns=["Store[Chain]", "Store[DistrictName]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]}, \
                        use_xmla=True)

查看語意連結/SemPy 的其他教學課程: