簡體   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