在这个快速入门中,你使用三个 Fabric 引擎来与同一个湖屋桌面交互。 首先,你通过SQL分析端点查询表。 然后,你在同一张表上以Direct Lake模式构建Power BI报告。 最后,你读了Spark笔记本上的同一张表格。 这些步骤合起来展示了OneLake的核心模式:一份数据副本,多个引擎。
OneLake 在 Azure Data Lake Storage (ADLS) Gen2 之上,以开放的 Delta Parquet 格式存储表状数据。 这种共享的基础让不同的 Fabric 引擎能够处理相同的数据,而无需为每次体验移动或格式化数据。 支持 ADLS Gen2 的工具和服务,如 Azure Databricks、Azure Synapse Analytics 和自定义应用,也能从外部 Fabric访问相同的数据。
先决条件
- Fabric 许可证。 或者,注册免费的 Fabric 试用版。
- 一个已分配容量的 Fabric 工作区。
- 一个湖仓,其中包含上一篇快速入门《快速入门:将数据导入 OneLake》中的
dim_products表。
通过SQL分析端点查询表
每个湖屋都会自动获得一个SQL分析终端。 端点直接读取 OneLake 中的 Delta 表,因此你可以对湖屋数据运行 T-SQL 查询,而无需复制到单独的 SQL 存储。
在Fabric门户中,打开包含你湖屋的工作区,选择湖屋。
在湖屋右上角,从下拉菜单中选择“用>分析数据”,切换到同一项的SQL分析端点。
在SQL分析端点菜单中,选择 新SQL查询。
在查询编辑器中,对表运行以下查询
dim_products:该查询按类别和子类别分组,以显示产品数量和平均价格。
SELECT category, subcategory, COUNT(*) AS products, ROUND(AVG(standard_price), 2) AS avg_price FROM ( SELECT product_id, category, subcategory, standard_price, ROW_NUMBER() OVER ( PARTITION BY product_id ORDER BY from_date DESC ) AS rn FROM dbo.dim_products ) latest WHERE rn = 1 GROUP BY category, subcategory ORDER BY avg_price DESC;查看查询输出面板中的结果。
你查询了该表,未移动或复制它。 SQL 分析端点读取 OneLake 中与 Lakehouse 使用的相同 Delta 文件。
以 Direct Lake 模式创建 Power BI 报告
Direct Lake 是一种 Power BI 存储模式,可以从 OneLake 读取 Delta 表,因此语义模型可以在不导入或复制数据的情况下提供报告。 Direct Lake 有两种模式,都从 OneLake 读取数据: OneLake 上的 Direct Lake 和 SQL 上的 Direct Lake。 它们的不同之处在于语义模型发现表和执行权限的方式。 由于此快速入门从 SQL 分析终结点开始,因此该流程会创建一个 基于 SQL 的 Direct Lake 语义模型。
在本节中,你在同一张表上构建语义模型和简单报告 dim_products 。
报告视图显示按 category 划分的产品平均价格,每个条形按 subcategory 细分。
在 SQL 分析端点菜单中,选择 “新语义模型”。
输入语义模型的名称,比如
dim_products_model。 选择表格dim_products,然后选择 确认。在语义模型菜单中,选择 新报告。
在报告编写体验中,展开
dim_products数据面板中的表格。在 可视化 面板中,选择 堆叠列式图表。
拖曳
category到 X轴。拖到
standard_priceY轴,然后把聚合设置为平均。拖曳
subcategory到 图例 ,可以将每个类别拆分为子类别。
在功能区上,选择 “文件>保存 ”,并将报告保存到你的工作区。
该报表从 OneLake 中你刚刚使用 T-SQL 查询过的同一个 Delta 表读取数据。 你没有创建该数据的第二个副本来为报表提供支持。
用Spark笔记本读同一张表格
Fabric 笔记本为你提供了一个基于同一数据的第三个引擎。 Spark 直接 dim_products 从 OneLake 读取 Delta 表,无需经过 SQL 分析端点或语义模型。 这一步表明,拥有完全不同查询栈的引擎也能从相同的底层文件工作。
回到包含
dim_products的湖边别墅。在湖屋菜单中,选择使用>笔记本>分析数据 新建笔记本。 笔记本开启时,你的湖边别墅已经作为默认湖边别墅连接上了。
在第一个代码单元格中,粘贴以下 PySpark 代码:
该代码作为
from_date时间维度,按期间和类别总结产品数量和平均价格。from pyspark.sql import functions as F df = spark.read.table("dim_products") summary = ( df.groupBy("from_date", "category") .agg( F.count("*").alias("products"), F.round(F.avg("standard_price"), 2).alias("avg_price"), ) .orderBy(F.col("from_date"), F.col("avg_price").desc()) ) display(summary)选择运行单元格(或按 Shift+Enter)以运行单元格。 输出显示了不同类别在生效日期间的平均价格差异。
Spark直接读取OneLake中的Delta文件。 没有数据被复制到Spark专用存储中,你查询的表就是支持你语义模型的那个表。 你现在在OneLake中拥有一份数据副本,三个引擎——SQL分析终端、Power BI Direct Lake和Spark——通过开放存储和开放表格式使用,无需移动或重新格式化数据。
清理资源
如果你不打算继续使用语义模型、报告和笔记本,请将它们从工作区中删除:
- 在你的工作区中,将鼠标悬停在你创建的语义模型上,选择“更多选项”(...)菜单,然后选择 删除。
- 在你的工作区中,对报告和笔记本重复此过程。
删除报告、语义模型或笔记本不会影响底层湖屋和 dim_products 表。