我是一名初级学生,如果我的解释不是那么好,我深表歉意。
我在 dbt 上创建了一个宏,以根据数据类型添加具有定义值或默认值的默认行。
我想要实现的是检查列是否是数据类型 date
字段,然后它将返回默认变量 {{ 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
以及snowflake在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 查看它们的实现了解您的自定义实现的想法。
关于sql - 使用数据构建工具(dbt)和雪花,如何检查列是否为日期字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70611726/