Microsoft Fabric 中的物化湖视图是什么?

注释

此功能目前以 预览版提供

具体化湖视图是预先计算并存储的 SQL 查询结果,可按需刷新或按计划刷新。 将它们视为包含复杂转换、聚合或联接结果的“智能表”,并采用智能刷新策略来保持数据最新状态。

为何使用具体化湖视图?

具体化湖视图解决了常见的数据工程难题:

  • 性能:不重复运行昂贵的查询,而是预计算和存储结果
  • 一致性:每个人都访问同一转换的数据,从而减少差异
  • 效率:仅当源数据实际更改时刷新,才能节省计算资源
  • 简单性:使用熟悉的 SQL 语法定义转换一次

何时应使用具体化湖视图?

如果有以下事项,请考虑具体化湖视图:

  • 经常访问的聚合 (每日销售额总计、每月指标)
  • 跨经常查询的多个大型表的复杂联接
  • 需要一致应用的数据质量转换
  • 报告数据集 合并来自多个源的数据
  • 奖牌体系结构 ,你需要铜牌→银→金转换

请勿将其用于:

  • 一次性或很少访问的查询
  • 简单且快速执行的转换
  • 高频流式数据(考虑实时智能实现亚秒级更新)

具体化湖视图的工作原理是什么?

具体化湖视图使用声明性方法 - 定义所需的内容,而不是如何生成它:

  1. 创建:编写定义转换的 SQL
  2. 刷新:Fabric 确定最佳刷新策略(增量、完整或跳过)
  3. 查询:应用程序像任何表一样查询具体化视图
  4. 监视:跟踪数据质量、世系和刷新状态

关键功能

自动刷新优化

Fabric 会自动确定何时以及如何刷新视图:

  • 增量刷新:仅处理新的或更改的数据
  • 完全刷新:根据需要重新生成整个视图
  • 跳过刷新:源数据未更改时无需刷新

内置数据质量

直接在 SQL 中定义规则并指定如何处理冲突:

CONSTRAINT valid_sales CHECK (sales_amount > 0) ON MISMATCH DROP

依赖项管理

  • 可视化您的视图相互依赖的方式
  • 基于依赖项的自动刷新排序
  • 处理遵循依赖项链来确保数据一致性

监视和洞察

  • 跟踪更新性能和执行状态
  • 在世系中查看数据质量指标和冲突计数
  • 监视作业实例和刷新历史记录

常见用例

销售报告仪表板

-- Daily sales summary that refreshes automatically
CREATE MATERIALIZED LAKE VIEW daily_sales AS
SELECT 
    DATE(order_date) as sale_date,
    region,
    SUM(amount) as total_sales,
    COUNT(*) as order_count
FROM orders 
GROUP BY DATE(order_date), region;

数据质量验证

-- Clean customer data with quality rules
CREATE MATERIALIZED LAKE VIEW clean_customers (
    CONSTRAINT valid_email CHECK (email IS NOT NULL) ON MISMATCH DROP
) AS
SELECT 
    customer_id,
    TRIM(customer_name) as customer_name,
    LOWER(email) as email
FROM raw_customers
WHERE customer_name IS NOT NULL;

奖牌体系结构

-- Bronze → Silver transformation
CREATE MATERIALIZED LAKE VIEW silver_products AS
SELECT 
    product_id,
    product_name,
    category,
    CAST(price as DECIMAL(10,2)) as price
FROM bronze_products
WHERE price > 0;

注释

此功能目前在美国中南部区域不可用。

当前限制

以下功能目前不适用于 Microsoft Fabric 中的物化湖视图:

  • PySpark 的声明性语法支持。 可以使用 Spark SQL 语法创建和刷新具体化湖视图。
  • 跨湖屋世系和执行功能。