使用数据构建工具(dbt)和雪花,如何检查列是否为日期字段?

Using data build tool(dbt) and snowflake, how can I check if a column is a date field?

我是大三学生,如果我的解释不够好,请见谅。

我在 dbt 上创建了一个宏,用于添加具有定义值或基于数据类型的默认值的默认行。

我想要实现的是检查该列是否为数据类型 date 字段,然后它将 return 我定义为的默认变量 {{ date_vi }} '1900-00-00',但出现错误:

dbt.adapters.snowflake.column.SnowflakeColumn object' has no attribute 'isdate 告诉我没有 is_date() 这令人困惑,因为 is_date() 可以正常在雪花上工作。

我现在在 dbt 文档上注意到了:

https://docs.getdbt.com/reference/dbt-classes#column

和 github 上雪花的源代码:

https://github.com/dbt-labs/dbt-snowflake/blob/main/dbt/adapters/snowflake/column.py

is_date() 实际上不适用于雪花适配器,我试图开始工作的代码是:{% elif col.is_date() %}{{ date_vl }} 所以我想知道最好的方法是什么检查列是否为日期 datatype?希望我解释得够多了,因为我还是个新手。

干杯。

您可以使用https://github.com/calogica/dbt-expectations#expect_column_values_to_be_of_type

或者在 https://github.com/calogica/dbt-expectations/blob/main/macros/schema_tests/column_values_basic/expect_column_values_to_be_in_type_list.sql 查看它们的实现,了解您的自定义实现的想法。