Объединить строки в список в PrestoSQL - PullRequest
0 голосов
/ 27 марта 2019

В настоящее время в моей таблице три поля: id1, id2 и actions.action имеет тип string.Например, моя таблица выглядит примерно так, как указано ниже:

id1   |   id2  |   actions
---------------------------
"a1"      "a2"     "action1"
"b1"      "b2"     "action2"
"a1"      "a2"     "action3"

Если значения id1, а также значения id2 одинаковы для любого числа строк, я хочу объединить эти строкитак что поле actions становится списком строк.Если ни одна из строк не имеет одинаковых значений для id1 и одинаковых значений для id2, я хочу преобразовать поля actions в виде списка, но только с одной строкой.Например, выходные данные запроса должны выглядеть примерно так:

id1   |   id2  |   actions
---------------------------
"a1"      "a2"     ["action1", "action3"]
"b1"      "b2"     ["action2"]

Я знаю некоторые основы Presto и могу объединять столбцы в зависимости от условий, но не был уверен, что этого можно достичь с помощью запроса.Если это может быть достигнуто, каков хороший подход для продвижения вперед в реализации этой логики?

1 Ответ

1 голос
/ 27 марта 2019

Попробуйте использовать ARRAY_JOIN с ARRAY_AGG:

SELECT
    id1,
    id2,
    ARRAY_JOIN(ARRAY_AGG(actions), ',') actions
FROM yourTable
GROUP BY
    id1,
    id2;
...