本教程演示如何使用 SemPy(预览版)计算 Power BI 语义模型中的度量值。
本教程介绍如何执行下列操作:
- 使用语义链接库 (SemPy) 的 Python 接口以编程方式评估 Power BI 度量值
- 了解有助于桥接 AI 和 BI 的 SemPy 组件:
- FabricDataFrame - 使用语义信息增强的 pandas 类结构
- 获取语义模型的函数,包括原始数据、配置和度量值
先决条件
获取 Microsoft Fabric 订阅。 或者注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左下侧的体验切换器切换到 Fabric。
在导航窗格中,选择 “工作区”,然后选择工作区将其设置为当前工作区。
下载 零售分析示例 PBIX.pbix 语义模型并将其上传到工作区。
在笔记本中继续操作
本教程随附 powerbi_measures_tutorial.ipynb 笔记本。
若要打开本教程随附的笔记本,请按照 为数据科学教程准备系统 中的说明将笔记本导入工作区。
或者,如果要从此页面复制并粘贴代码,则可以创建新的笔记本。
在开始运行代码之前,请务必将湖屋连接到笔记本。
设置笔记本
在本部分中,将设置笔记本环境。
在笔记本中使用
%pip内联方式从 PyPI 安装SemPy。%pip install semantic-link-sempy导入稍后将使用的模块。
import sempy.fabric as fabric连接到 Power BI 工作区,并在工作区中列出语义模型。
fabric.list_datasets()加载语义模型。 在本教程中,你将使用零售分析示例语义模型。
dataset = "Retail Analysis Sample"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] 和 Store[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。 如果查询使用此客户端失败,请通过设置 use_xmla=True切换到 Power BI XMLA 终结点。 使用 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 教程: