期望值

本页包含针对 Lakeflow 声明性管道期望的 Python 参考文档。

期望装饰器用于声明在 Lakeflow 声明性管道中创建的具体化视图、流式表或临时视图上的数据质量约束。

dlt 模块包含六个修饰器,用于控制预期行为。 下表描述了这些排列的不同维度:

行为 选项
对违反行为的措施
  • 在目标数据集中包含该行。 将有效记录和无效记录计数与其他数据集指标一起记录。
  • 在写入目标数据集之前删除该行。 已删除记录的计数与其他数据集指标一起记录。
  • 立即停止更新。 此预期会导致单个流失败,并且不会导致管道中的其他流失败。
预期数 单个期望或多个期望。

可以将多个期望修饰器添加到数据集,从而在数据质量约束的严格性方面提供灵活性。

使用 expect_all 修饰器时,每个期望都有自己的描述,并报告详细的指标。

语法

预期修饰器位于某个 @dlt.table()@dlt.view() 修饰器之后以及数据集定义函数之前,如以下示例所示:

import dlt

@dlt.table()
@dlt.expect(description, constraint)
@dlt.expect_or_drop(description, constraint)
@dlt.expect_or_fail(description, constraint)
@dlt.expect_all({description: constraint, ...})
@dlt.expect_all_or_drop({description: constraint, ...})
@dlt.expect_all_or_fail({description: constraint, ...})
def <function-name>():
    return (<query>)

参数

参数 类型 DESCRIPTION
description str 必填。 一个标识约束的描述。 约束说明对于每个数据集必须是唯一的。
constraint str 必填。 约束子句是一个 SQL 条件语句,必须计算结果为 truefalse 针对每个记录。 该约束包含正在验证的内容的实际逻辑。 当一条记录未通过此条件时,将触发预期条件。

expect_all 修饰器需要将描述和约束作为键值对的 dict 进行传递。