【发布时间】:2021-02-17 20:46:11
【问题描述】:
我想在 DBT for Redshift 中使用 column1 ^^ column2 ^^ ... 语法连接几列。如果列 @@ 中有 NULL 值,则应使用,导致 f.e. @@ ^^ @@。我找到了以下用于连接的宏:
{% macro safe_concat(field_list) %}
{# Takes an input list and generates a concat() statement with each argument in the list safe_casted to a string and wrapped in an ifnull() #}
concat({% for f in field_list %}
ifnull(safe_cast({{ f }} as string), '@@')
{% if not loop.last %}, {% endif %}
{% endfor %})
{% endmacro %}
当我在我的选择语句中使用它时:
select
{{ safe_concat([street, city]) }} as address_key
from source
我收到以下错误。这与我使用的代码有关吗?
Database Error in model address (models/address.sql)
syntax error at or near "as"
LINE 32: ifnull(safe_cast( as string), '@@')
【问题讨论】:
标签: sql macros concatenation dbt