#sql #snowflake-cloud-data-platform
#sql #снежинка-облако-платформа для передачи данных
Вопрос:
У меня есть сценарий СЛИЯНИЯ с ARRAY_AGG()
функцией в основном сценарии. Как только у меня будет совпадение, я хотел бы объединить массивы из исходной и целевой таблиц, но не хочу добавлять существующие значения. Я посмотрел на использование ARRAY_CAT()
, но оно не возвращает ожидаемый результат
Это и есть запрос:
SELECT ARRAY_CAT(ARRAY_CONSTRUCT('VALUE 1', 'VALUE 2'), ARRAY_CONSTRUCT('VALUE 1', 'VALUE 3')) arr_col
Но это возвращается:
ARR_COL |
---|
[ «ЗНАЧЕНИЕ 1», «ЗНАЧЕНИЕ 2», «ЗНАЧЕНИЕ 1», «ЗНАЧЕНИЕ 3» ] |
И что мне нужно, так это :
ARR_COL |
---|
[ «ЗНАЧЕНИЕ 1», «ЗНАЧЕНИЕ 2», «ЗНАЧЕНИЕ 3» ] |
Есть ли простой способ достичь этого, кроме преобразования в строку, удаления двойников с помощью регулярного выражения, а затем разделения на массив?
Ответ №1:
Использование FLATTEN
и ARRAY_AGG(DISTINCT)
:
SELECT ARRAY_AGG(DISTINCT F."VALUE") AS ARR_COL FROM TABLE(FLATTEN( ARRAY_CAT(ARRAY_CONSTRUCT('VALUE 1', 'VALUE 2'), ARRAY_CONSTRUCT('VALUE 1', 'VALUE 3')) )) f