[英]Concatenate columns using a macro in DBT for Redshift
我想在 DBT for Redshift 中使用column1 ^^ column2 ^^ ...
语法连接几列。 如果列中存在 NULL 值@@
应该使用,导致 fe @@ ^^ @@
。 我找到了以下用于连接的宏:
{% 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), '@@')
当您在宏中调用列名时,尝试将它们用引号括起来 - 我认为它试图传入变量street
和city
(因为您已经在花括号内),它们不存在,因此评估为None
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.