注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

定义数据期望

数据期望是在数据集输入或输出上通过代码定义的一组要求。这些要求,或称为“期望”,可以用于创建检查,以提高数据管道的稳定性。如果数据期望检查在数据集搭建的一部分中失败,搭建可以自动中止,以节省时间和资源,并避免下游数据中的问题。数据期望与数据健康集成以进行监控。

通过查看Python Transforms文档中的指南或查看所有可用期望的参考来开始。

使用数据期望的好处

  • 管道保护 - 由于期望在搭建的一部分中运行,您可以在期望失败时中止搭建,防止下游失败和不良数据传播到下游资源。
  • 更改管理 - 由于期望在代码库中定义,更改它们将需要对受保护分支设置的相同拉取请求审查流程。
  • 主动测试 - 通过在开发分支上搭建,以预测合并更改到受保护分支之前的检查失败

术语

  • 期望 - 对数据结构或内容的强类型要求(例如,列不为空)
  • 检查 - 一个有意义的期望(可以是多个期望的组合),连接到变换中的单个数据集(输出或输入)。检查有一个名称,用于标识和监控它(例如,“对象模式验证”)。
    • 前置条件 - 指派给变换输入的检查,通常用于在进行搭建之前验证输入结构或内容的基本假设。
    • 后置条件 - 指派给变换输出的检查,通常用于保证数据集SLA得到维护并保护下游依赖。
  • 检查结果 - 在检查运行时(搭建过程中)产生,包含期望结果及其细分的信息。检查结果可在数据健康中进行监控。

如何工作?

定义

数据期望在相关代码库中的数据集变换上定义。检查可以应用于变换的输入和输出(详情见指南)。检查名称在单个变换中必须唯一。

在期望的同时,检查定义了搭建时如何处理失败。当检查失败时,搭建可以中止或以警告继续。

检查在相关分支的CI中注册。在受保护分支上更改期望将需要拉取请求,就像任何其他代码更改一样。

在对受保护分支进行更改时,建议在开发分支上搭建数据集,以确保在将更改合并到默认分支之前满足您的数据期望。

运行

注册的检查将作为搭建任务的一部分运行。未满足数据期望的失败将在搭建应用程序和数据集历史标签中突出显示。如果检查定义指示在出错时失败,任务状态将更改为“中止”并出现相应出错。在任务时间轴中,您可以找到“期望”指示器;点击该指示器将显示检查结果及不同期望的细分。

前置条件失败时,变换的输出将被中止(而不是前置条件定义的输入)。要中止输入数据集的搭建,数据期望必须在输入数据集变换上定义为后置条件

监控

每次检查运行都会产生一个结果,报告给数据健康。最新的数据期望结果将在数据集预览应用程序的健康标签中呈现,其中可以设置通知和问题触发(类似于其他数据健康检查)。

请记住,数据集上的检查通过其名称唯一标识。检查的历史以及其各自的监控设置将仅在名称不更改的情况下保留。更改检查的名称相当于删除旧检查并在其位置创建一个新检查。

增量

所有检查都在完整数据集上运行,无论变换的增量特性如何。

例如,假设我们在以增量运行的变换输出上有一个主键检查。由于数据期望检查始终在完整数据集上运行,如果在新事务中包含了一个新的主键(即将增量写入)并且相同的主键已经被写入(在之前的事务中),检查将失败。