#arrays #snowflake-cloud-data-platform #dbt
Вопрос:
Я довольно новичок в работе с массивами в snowflake (и dbt). Я разделяю имена поставщиков, которые у меня есть, когда они заполняются как имена соединений в нашем интерфейсе. Теперь я разделяю их (см. Пример ниже), но я хотел бы знать, можно ли разделить уже разделенный массив или другую функцию, которую я могу использовать для разделения текста. В приведенном ниже примере первые 3 записи разделены правильно, но следующие три разделяются неправильно, и именно здесь я был бы признателен за ввод. Простое утверждение о случае, которое я использую в данный момент, таково:
,case
when upper(vendor_name) like '% AND %' then split(upper(vendor_name), ' AND ')
when vendor_name like '%amp;%' then split(upper(vendor_name), ' amp; ')
else array_construct(upper(vendor_name))
end as arr_vendor_name
Ответ №1:
Вы можете сделать это в два этапа:
- Заменить » amp; «, » И «, «, » на «,».
- Затем разделитесь на «,».
split(
replace(replace(replace(vendor_name, ' AND ', ','), ' amp; ', ','), ', ', ',')
, ','
)
Бонус: вам это больше не понадобится case
, и array_construct
это тоже исчезнет.
Комментарии:
1. или немного безопаснее заменить
AND
наamp;
, а затем разделить на это, таким образом, вы не превратите допустимую запятую в точку разделения.