教程:从 Jupyter 笔记本中提取并计算 Power BI 度量值
本教程演示如何使用 SemPy(预览版)计算语义模型(Power BI 数据集)中的度量值。
本教程介绍如何执行下列操作:
- 通过语义链接的 Python 库 (SemPy) 的 Python 接口以编程方式评估 Power BI 度量值。
- 熟悉 SemPy 的组件,它们有助于弥合 AI 和 BI 之间的差距。 这些核心组件包括:
- FabricDataFrame - 一种类似 panda 的结构,通过其他语义信息进行了增强。
- 可用于提取语义模型(包括原始数据、配置和度量值)的有用函数。
先决条件
获取 Microsoft Fabric 订阅。 或者注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左侧的体验切换器切换到 Synapse 数据科学体验。
选择左侧导航窗格中的“工作区”,找到并选中自己的工作区。 此工作区将成为当前工作区。
下载 Retail Analysis Sample PBIX.pbix 语义模型并将其上传到工作区。
在笔记本中继续操作
本教程随附 powerbi_measures_tutorial.ipynb 笔记本。
若要打开本教程随附的笔记本,请按照让系统为数据科学做好准备教程中的说明操作,将该笔记本导入到工作区。
或者,如果要从此页面复制并粘贴代码,则可以创建新的笔记本。
在开始运行代码之前,请务必将湖屋连接到笔记本。
设置笔记本
在本部分中,你将使用必要的模块和数据设置笔记本环境。
使用笔记本中的
%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
允许你提供多个度量值的标识符,并在同一数据帧中输出计算值:
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 的其他教程: