本文介绍如何使用 Microsoft Fabric 中的语义链接 Spark 本机连接器读取数据和元数据,并评估语义模型中的度量值。 你还将了解如何编写语义模型可使用的数据。
先决条件
获取 Microsoft Fabric 订阅。 或者注册免费的 Microsoft Fabric 试用版。
登录 Microsoft Fabric。
使用主页左下侧的体验切换器切换到 Fabric。
转到 Microsoft Fabric 中的数据科学体验。
- 在左窗格中,选择 工作负载。
- 选择 数据科学。
创建新的笔记本,将代码复制/粘贴到单元格中。
-
对于 Spark 3.4 及以上版本,使用 Fabric 时,语义链接在默认运行时中可用,无需安装它。 如果使用 Spark 3.3 或更低版本,或者想要更新到最新版本的语义链接,可以运行以下命令:
python %pip install -U semantic-link
从 fabric-samples 存储库的数据集文件夹中下载 Customer Profitability Sample.pbix 语义模型,将语义模型保存在本地。
将语义模型上传到工作区
在本文中,我们将使用“Customer Profitability Sample.pbix”语义模型。 此语义模型引用公司制造营销材料,并包含有关各个业务部门的产品、客户和相应收入的数据。
- 在左窗格中,选择 工作区,然后选择 工作区的名称 将其打开。
- 选择“导入”“报表或分页报表”>“从此计算机”,然后选择“客户盈利率示例.pbix”语义模型>。
上传完成后,工作区将有三个新项目:Power BI 报表、仪表板和名为“客户盈利率示例”的语义模型。 使用此语义模型完成本文中的步骤。
在 Python、R、SQL 和 Scala 中使用 Spark 读取和写入数据
默认情况下,用于访问语义模型的工作区是:
- 附加湖屋的工作区,或者
- 笔记本的工作区(如果附加了湖屋)。
Microsoft Fabric 以 Spark 表的形式公开工作区中所有语义模型中的所有表。 所有 Spark SQL 命令都可以在 Python、R 和 Scala 中执行。 语义链接 Spark 本机连接器支持将 Spark 谓词向下推送到 Power BI 引擎。
提示
由于 Power BI 表和度量值公开为常规 Spark 表,因此可以在单个查询中与其他 Spark 数据源联接它们。
使用 PySpark 列出工作区中所有语义模型的表。
df = spark.sql("SHOW TABLES FROM pbi") display(df)
使用 SparkR,从“Customer Profitability Sample”语义模型中的“”表中检索数据。
注意
检索表受到严格的限制(请参阅读取限制),结果可能不完整。 使用聚合下推减少传输的数据量。 支持的聚合包括:COUNT、SUM、AVG、MIN 和 MAX。
%%sparkr df = sql("SELECT * FROM pbi.`Customer Profitability Sample`.Customer") display(df)
Power BI 度量值可通过虚拟表“_Metrics”获取。 以下查询按区域和行业计算总收入和利润预算。
%%sql SELECT `Customer[Country/Region]`, `Industry[Industry]`, AVG(`Total Revenue`), AVG(`Revenue Budget`) FROM pbi.`Customer Profitability Sample`.`_Metrics` WHERE `Customer[State]` in ('CA', 'WA') GROUP BY `Customer[Country/Region]`, `Industry[Industry]`
使用 Spark 架构检查可用的度量值和维度。
spark.table("pbi.`Customer Profitability Sample`._Metrics").printSchema()
将数据保存为 Lakehouse 的增量表。
delta_table_path = "<your delta table path>" #fill in your delta table path df.write.format("delta").mode("overwrite").save(delta_table_path)
读取访问限制
读取访问 API 具有以下限制:
- 分析服务不支持运行时间超过 10 秒的查询(Spark 中的指示:“java.net.SocketTimeoutException:PowerBI 服务通信失败”)
- 使用 Spark SQL 的 Power BI 表访问受 Power BI 后端限制的约束。
- Spark _Metrics 查询的谓词下推仅限于单个 IN 表达式,要求至少有两个元素。 数据传输后,Spark 中会计算额外的 IN 表达式和不受支持的谓词。
- 使用 Spark SQL 访问的 Power BI 表的谓词下推不支持以下表达式:
- 必须重启 Spark 会话,才能在 Spark SQL 中访问新的语义模型。