[英]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.