使用DBT时列别名为何填充NULL为列名?如何修正?
DBT查询中常量列填充而非NULL的问题解决
问题原因
你当前的SQL语句里,'B 1' as column2和'C 2' as column3是直接声明字符串常量值,而非引用原表my_data中的列。这类写法的逻辑是:不管原表数据状态如何,查询返回的每一行都会将这两列固定填充为指定的常量字符串。哪怕原表my_data为空或仅含NULL值,只要查询能返回行,这两个常量值就会被填充。
修正方案
根据你的需求,分两种情况处理:
- 原表
my_data存在对应列(比如原表有B、C列):直接引用原表列并重命名,这样原表列的NULL值会被保留:
select A as column1, B as column2, C as column3 from {{ ref('my_data') }}
- 原表
my_data没有对应列,仅需新增NULL列:显式指定NULL作为列值,这样新增的列会保持NULL:
select A as column1, NULL as column2, NULL as column3 from {{ ref('my_data') }}
内容的提问来源于stack exchange,提问作者iamyolanda
相关产品推荐
相关产品推荐

