本文介绍在为具体化湖视图使用最佳刷新时要考虑的语义方面,并概述了具体化湖视图的可用刷新模式。
具体化湖视图的刷新模式
最佳刷新:此模式会自动为具体化湖视图选择最佳性能的最佳刷新策略 - 增量、完整或无刷新。
完全刷新:此模式强制执行具体化湖视图的完整重新计算。
最佳刷新
优化刷新旨在提高 Microsoft Fabric 平台上的数据管理效率、速度和成本效益。 它会自动选择最合适的刷新策略,以最大程度地提高刷新性能。 在最佳刷新下支持以下刷新策略:
| 刷新策略 | Description |
|---|---|
| 增量刷新 | 增量刷新仅处理具体化湖视图定义中引用的源中的已更改数据。 |
| 无刷新 | 如果源保持不变,即如果在增量提交中未检测到任何更改,服务将跳过刷新。 此行为可节省不必要的处理。 |
| 完全刷新 | 完全刷新涉及在对源进行任何修改时评估依赖源的整个数据集。 |
重要
若要使增量刷新生效,需要将增量 CDF 属性设置为 delta.enableChangeDataFeed=true,并应用于物化湖视图定义中引用的源。
最佳刷新的优点
成本更低:使用更少的计算和存储,尤其是在数据更改最少时,不会在检测到增量提交更改时绕过数据刷新。
提高效率:更快的刷新周期有助于提供更新的见解并跟上快速变化的数据。
节省时间:仅处理已更改的数据,从而缩短刷新持续时间。
增量刷新策略中的最佳刷新所支持的表达式
使用支持的表达式创建具体化湖视图时,Fabric 可以执行增量刷新。 如果在查询中使用了不支持的表达式,则会根据更改执行完全刷新或不执行刷新。
下表概述了支持的表达式:
| SQL 构建 | 备注 |
|---|---|
| SELECT 表达式 | 支持具有确定性函数(内置)的表达式。 非确定性和窗口函数会导致完全刷新策略。 |
| FROM | |
| WHERE | 仅支持确定性的内置函数。 |
| INNER JOIN | |
| UNION ALL | |
| 数据质量约束 | 约束中仅支持确定性的内置函数。 |
注释
为了获得更佳的增量刷新体验,请尽量使用受支持的语句。 如果查询使用不受支持的模式,刷新会自动回退到完全刷新策略。
最佳刷新的关键点
- 若要优化结果,请在查询中使用支持的表达式,以便应用增量刷新策略。
- 仅追加数据支持增量刷新。 如果数据包括删除或更新,Fabric 将执行完全刷新。
- 如果在数据湖视图具体化定义中定义数据质量约束,增量刷新会在更新期间遵循并执行这些约束。
- 对于使用最佳刷新,不收取任何额外费用。 刷新操作期间,系统会根据计算使用情况进行计费。
- 在数据集较小的情况下,为了达到性能收益,Fabric 可能会选择优先采用完全刷新而非增量刷新。
如何启用最佳刷新模式
默认情况下,为世系启用最佳刷新模式。 否则,请按照以下步骤进行。
完全刷新
完全刷新将基于源数据对物化湖视图进行完整重新计算。
如果需要在物化湖视图中重新处理整个数据,则可以禁用最优刷新开关以切换到完全刷新模式。
或
若要对物化湖视图进行完全刷新,可以使用以下命令:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
注释
刷新使用非Delta表作为其源的物化湖视图会启动完整刷新。
确定刷新策略
若要在最佳刷新模式下确定刷新策略,可以查询sys_dq_metrics表:
SELECT
MLVName,
refreshPolicy
FROM
dbo.sys_dq_metrics
WHERE
MLVName = '<materialized_lake_view_name>'