Агрегация в Clickhouse

Есть ли в Clickhouse аналог array_agg из PostgreSQL? Пытаюсь получить из таблицы:

id    text     pid      date
1   "Текст1"    1   "2020-01-01"
2   "Текст2"    3   "2010-01-01"
3   "Текст1"    2   "2020-10-01"
4   "Текст1"    3   "2015-07-03"
5   "Текст2"    4   "2014-09-07"

таблицу:

  text        min_date        max_date     array_agg
"Текст1"    "2015-07-03"    "2020-10-01"    {1,2,3}
"Текст2"    "2010-01-01"    "2014-09-07"    {3,4}

В postgresql работает запрос select text, min(date), max(date), array_agg(pid) from table group by text. С Clickhouse как это заменить - непонятно. Читал про -ForEach, но он вроде просто преобразует агрегатную функцию.


Ответы (2 шт):

Автор решения: Aziz Umarov

Посмотрите на данную функцию.

groupUniqArray

Синтаксис: groupUniqArray(x) или groupUniqArray(max_size)(x)

Составляет массив из различных значений аргумента. Расход оперативной памяти такой же, как у функции uniqExact.

Функция groupUniqArray(max_size)(x) ограничивает размер результирующего массива до max_size элементов. Например, groupUniqArray(1)(x) равнозначно [any(x)].

→ Ссылка
Автор решения: vladimir

Скорее подходит функция groupArray:

select text, min(date), max(date), groupArray(pid) array_agg
from table 
group by text
→ Ссылка