我正在使用 dbt 将数据从具有所有 STRING 字段的源表转换为具有 TYPED 字段(例如:DATE、INT、...)的目标表
我想确保(使用 dbt test 命令)在启动 dbt run 命令之前可以进行数据类型转换。例如,在预期的 DATE 字段(在我的源表中的 STRING 中),必须对整个列值运行断言才能通过测试。
在 dbt-expectations 包上,有一些有用的测试,例如“expect_column_values_to_be_of_type”,但此测试检查列数据类型(在表的结构中),而不是检查所有列值是否与特定数据类型匹配。
您是否有任何想法避免编写自定义测试并使用本机或打包测试?
编辑:候选应该是“expect_column_values_to_match_regex”,但也许更好......
非常感谢您的帮助:)
在 dbt 包 - dbt-expectations 中,我认为
expect_column_values_to_match_regex
和 expect_column_values_to_not_match_regex
最适合您的要求。
其实你可以使用
dbt-utils.expression_is_true
来编写你自己的SQL。另外,您还询问了 native
,这就是使用本机 SQL 的方式。