dbt 中模式测试的价值是什么?

What is the value of schema tests in dbt?

你什么时候想使用 dbt schema testsuniquenot_nullaccepted_values、&relationships),什么时候可以使用 SQL 架构约束?

例如,这里有一些 SQL 模式约束可以替代每个 dbt 模式测试:

您不能在视图或 CTE 上有上面列出的 table 约束。 dbt 的价值在于允许用户构建 SELECT 查询的 DAG,而不必担心 DDL 或配置。稍后可以将它们配置为 tables 而不是默认视图,并且无需更改语法。

dbt 测试比数据库约束更灵活。如果您尝试向非空目标插入空值,您的过程将失败,故事结束。使用 dbt 测试,您可以先执行,然后再测试,这可能很有趣。

更多示例:

  • 您可以将测试分类为警告而不是错误
  • 您可以定义错误阈值
  • 您可以指定一个过滤器以仅将测试应用于值的子集
  • 测试在不同环境中的行为可能不同(prod/dev 等)
  • dbt 测试比数据库约束更容易修改