教學課程:從 Jupyter Notebook 擷取並計算 Power BI 量值
本教學課程會說明如何使用 SemPy (預覽) 來計算語意模型 (Power BI 資料集) 中的量值。
在本教學課程中,您會了解如何:
- 透過語意連結 Python 庫 (SemPy) 的 Python 介面,以程式設計方式評估 Power BI 量值。
- 熟悉 SemPy 的元件,這些元件有助於彌合 AI 與 BI 之間的差距。 這些元件包括:
- FabricDataFrame - 使用其他語意資訊增強的 Pandas 類似結構。
- 可讓您擷取語意模型的實用函數,包括未經處理資料、組態和量值。
必要條件
取得 Microsoft Fabric 訂用帳戶。 或註冊免費的 Microsoft Fabric 試用版。
登入 Microsoft Fabric。
使用首頁左側的體驗切換器,切換至 Synapse 資料科學體驗。
從左側瀏覽窗格中選取 [工作區],以尋找並選取您的工作區。 此工作區會成為您目前的工作區。
下載 Retail Analysis Sample PBIX.pbix 語意模型,並將其上傳至您的工作區。
在筆記本中跟著做
本教學課程會隨附 powerbi_measures_tutorial.ipynb 筆記本。
若要開啟本教學課程隨附的筆記本,請遵循為資料科學教學課程準備系統中的指示,將筆記本匯入您的工作區。
如果您想要複製並貼上此頁面中的程式碼,則可以建立新的筆記本。
開始執行程式碼之前,請務必將 Lakehouse 連結至筆記本。
設定筆記本
在本章節中,您會使用必要的模組和資料來設定筆記本環境。
使用筆記本內的
%pip
內嵌安裝功能從 PyPI 安裝SemPy
:%pip install semantic-link
對稍後需要的模組執行必要的匯入:
import sempy.fabric as fabric
您可以連線至 Power BI 工作區。 列出工作區中的語意模型:
fabric.list_datasets()
載入語意模型。 在本教學課程中,您會使用 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
資料表的資料行 Chain
和 DistrictName
進行分組。
使用篩選條件評估量值
您也可以使用 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 的其他教學課程: