繁体   English   中英

使用 DBT for Redshift 中的宏连接列

[英]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), '@@')

当您在宏中调用列名时,尝试将它们用引号括起来 - 我认为它试图传入变量streetcity (因为您已经在花括号内),它们不存在,因此评估为None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM