3

如果我的解释不是那么好,我是一名初级人员,所以很抱歉。

我在 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

以及 github 上的雪花源代码:

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

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

干杯。

4

1 回答 1

2

您可以使用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查看他们的实现,了解您的自定义实现的想法。

于 2022-01-07T01:58:02.290 回答