Как объединить массивы в Snowflake с различными значениями?

#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