dbt_utils union_relations的column_override参数不生效求助
解决dbt_utils union_relations中column_override参数不生效的问题
排查方向与解决方案
1. 列名大小写不匹配
dbt_utils的column_override参数对列名大小写敏感。从编译后的SQL可以看到,源表的列名是全大写的DIGITAL_CAMPAIGN_ID,但你在参数中使用的是小写蛇形的digital_campaign_id,这会导致宏无法识别需要覆盖的列。
修正方法:将column_override中的列名改为与源表完全一致的大小写:
column_override={"DIGITAL_CAMPAIGN_ID": "TEXT"}
2. dbt_utils版本问题
旧版本的dbt_utils可能存在column_override参数的逻辑bug,比如类型推断优先级覆盖了自定义配置。建议升级到最新稳定版的dbt_utils(版本≥1.0.0),再重新编译测试。
3. 检查自定义宏覆写逻辑
确认你的dbt项目中没有自定义覆写union_relations宏的逻辑,否则可能会导致官方宏的参数失效。检查项目的macros目录下是否存在同名宏,若有则需要调整自定义逻辑以兼容column_override参数。
修正后的完整代码
{{ dbt_utils.union_relations( relations=[ ref('base_consumer_digital_ad_performance_apple_ads_spend'), ref('base_consumer_digital_ad_performance_facebook_spend'), ref('base_consumer_digital_ad_performance_tiktok_spend'), ref('base_consumer_digital_ad_performance_google_spend') ], column_override={"DIGITAL_CAMPAIGN_ID": "TEXT"} ) }}
内容的提问来源于stack exchange,提问作者C.Carrel
相关产品推荐
相关产品推荐

