快速启动:在 Microsoft Fabric 上查询并调用 OneLake 数据

在这个快速入门中,你使用三个 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访问相同的数据。

先决条件

通过SQL分析端点查询表

每个湖屋都会自动获得一个SQL分析终端。 端点直接读取 OneLake 中的 Delta 表,因此你可以对湖屋数据运行 T-SQL 查询,而无需复制到单独的 SQL 存储。

  1. Fabric门户中,打开包含你湖屋的工作区,选择湖屋。

  2. 在湖屋右上角,从下拉菜单中选择“用>分析数据”,切换到同一项的SQL分析端点。

    这是显示切换到 SQL 分析端点的 Fabric 门户截图。

  3. 在SQL分析端点菜单中,选择 新SQL查询

  4. 在查询编辑器中,对表运行以下查询 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;
    
  5. 查看查询输出面板中的结果。

    这是一张显示SQL查询输出的Fabric门户截图。

你查询了该表,未移动或复制它。 SQL 分析端点读取 OneLake 中与 Lakehouse 使用的相同 Delta 文件。

以 Direct Lake 模式创建 Power BI 报告

Direct Lake 是一种 Power BI 存储模式,可以从 OneLake 读取 Delta 表,因此语义模型可以在不导入或复制数据的情况下提供报告。 Direct Lake 有两种模式,都从 OneLake 读取数据: OneLake 上的 Direct LakeSQL 上的 Direct Lake。 它们的不同之处在于语义模型发现表和执行权限的方式。 由于此快速入门从 SQL 分析终结点开始,因此该流程会创建一个 基于 SQL 的 Direct Lake 语义模型。

在本节中,你在同一张表上构建语义模型和简单报告 dim_products

报告视图显示按 category 划分的产品平均价格,每个条形按 subcategory 细分。

  1. 在 SQL 分析端点菜单中,选择 “新语义模型”。

    这是一张Fabric门户的截图,展示了从SQL分析端点创建语义模型的过程。

  2. 输入语义模型的名称,比如 dim_products_model。 选择表格 dim_products ,然后选择 确认

  3. 在语义模型菜单中,选择 新报告

    这是一张Fabric门户的截图,展示了从语义模型创建报告的过程。

  4. 在报告编写体验中,展开dim_products数据面板中的表格。

  5. 可视化 面板中,选择 堆叠列式图表

    这是一张 Fabric 门户的截图,显示了选择堆叠柱状图可视化的过程。

  6. 拖曳 categoryX轴

  7. 拖到standard_priceY轴,然后把聚合设置为平均

  8. 拖曳 subcategory图例 ,可以将每个类别拆分为子类别。

    这是一张Fabric门户的截图,展示了报表构建步骤的结果。

  9. 在功能区上,选择 “文件>保存 ”,并将报告保存到你的工作区。

该报表从 OneLake 中你刚刚使用 T-SQL 查询过的同一个 Delta 表读取数据。 你没有创建该数据的第二个副本来为报表提供支持。

用Spark笔记本读同一张表格

Fabric 笔记本为你提供了一个基于同一数据的第三个引擎。 Spark 直接 dim_products 从 OneLake 读取 Delta 表,无需经过 SQL 分析端点或语义模型。 这一步表明,拥有完全不同查询栈的引擎也能从相同的底层文件工作。

  1. 回到包含 dim_products的湖边别墅。

  2. 在湖屋菜单中,选择使用>笔记本>分析数据 新建笔记本。 笔记本开启时,你的湖边别墅已经作为默认湖边别墅连接上了。

  3. 在第一个代码单元格中,粘贴以下 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)
    
  4. 选择运行单元格(或按 Shift+Enter)以运行单元格。 输出显示了不同类别在生效日期间的平均价格差异。

    这是一张显示笔记本代码结果的Fabric门户截图。

Spark直接读取OneLake中的Delta文件。 没有数据被复制到Spark专用存储中,你查询的表就是支持你语义模型的那个表。 你现在在OneLake中拥有一份数据副本,三个引擎——SQL分析终端、Power BI Direct Lake和Spark——通过开放存储和开放表格式使用,无需移动或重新格式化数据。

清理资源

如果你不打算继续使用语义模型、报告和笔记本,请将它们从工作区中删除:

  1. 在你的工作区中,将鼠标悬停在你创建的语义模型上,选择“更多选项”(...)菜单,然后选择 删除
  2. 在你的工作区中,对报告和笔记本重复此过程。

删除报告、语义模型或笔记本不会影响底层湖屋和 dim_products 表。