具体化湖视图中的数据质量

在大数据时代,奖牌体系结构成为一个强大的框架,用于管理和处理不同优化阶段的数据,从原始数据到高度策划的数据集。 这种结构化方法不仅增强了数据可管理性,而且可确保数据质量在整个数据生命周期内保持。

确保数据质量在奖牌体系结构的每个阶段都至关重要,这对于做出明智的业务决策至关重要。 数据质量不佳可能导致不正确的见解和作效率低下。

本文介绍如何在Microsoft Fabric 中具体化湖视图(MLV)中实现数据质量。

实现数据质量

转换数据时,撰写精确查询以从源表中排除质量不佳的数据变得非常重要,这会增加处理时间,有时会导致整个管道由于轻微的数据问题而失败。

定义 MLV 时,通过设置约束来维护数据质量。 Fabric 中的具体化视图提供了一种有效实现数据质量控制检查的方法。

指定约束时,可以执行以下操作。

FAIL – 如果违反任何约束,此操作将停止刷新 MLV,并在第一个违约实例处停止。 这是默认行为,即使未指定 FAIL 关键字。

DROP – 此作处理 MLV 并删除不符合指定约束的记录。 它还提供世系视图中已删除的记录计数。

注释

如果在 MLV 中同时定义了 DROP 和 FAIL 操作,则 FAIL 操作优先。

在具体化湖视图中定义数据质量检查

以下示例定义了约束cust_blank,它检查字段customerName是否不为null。 具有 null customerName 的行将被排除在处理之外。

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched  
(CONSTRAINT cust_blank CHECK (customerName is not null) on MISMATCH DROP)
AS
SELECT
    c.customerID,
    c.customerName,
    c.contact, 
    CASE  
       WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE  
       ELSE FALSE  
    END AS has_orders 
FROM bronze.customers c LEFT JOIN bronze.orders o 
ON c.customerID = o.customerID; 

当前限制

  • 不支持在创建 MLV 后更新数据质量约束。 若要更新数据质量约束,必须重新创建 MLV。
  • 在约束条件中使用 LIKE 或正则表达式等运算符的函数和模式搜索受到限制。

已知问题

  • 在包含 FAIL 操作的约束中创建和刷新 MLV 可能会导致“找不到增量表”问题。 在这种情况下,建议重新创建 MLV,并避免使用 FAIL 操作。