Redshift中提取Super类型字段的Macro返回空值问题排查
问题原因
你的Macro存在语法错误:properties.field_name中的field_name被Jinja当作固定属性名处理,而非你传入的参数值。最终生成的SQL会直接引用properties.field_name这个不存在的字段,导致Redshift无法匹配到目标数据,返回全Null结果。
修正后的Macro
{% macro cast_and_trim(field_name) %} TRIM('"' FROM cast(properties.{{ field_name }} AS varchar)) {% endmacro %}
调用说明
- 若字段名包含空格、特殊字符,调用时传入带双引号的字段名即可,比如你原有的写法
{{ cast_and_trim('"Is New User"') }},此时生成的SQL会正确解析为properties."Is New User"。 - 若字段名是常规格式(无空格、特殊字符),直接传入字段名即可,例如
{{ cast_and_trim('a') }},对应生成properties.a。
内容的提问来源于stack exchange,提问作者Gesara
相关产品推荐
相关产品推荐

