массиве после groupArray нельзя (что логично, когда выполняем запрос в Distributed таблице). Однако, ручные тесты показывают, что запросы вида SELECT groupArray(t.item) FROM (SELECT item FROM table ORDER BY time) t имеют стабильный порядок (в соотвествии с ORDER BY во вложенном селекте), что, судя по всему, вызвано тем, что Dirtibuted таблица собирает записи в определенном порядке и отправляет в groupArray без какого-либо "перемешивания" – насколько это надежное предположение?
P.S. groupArraySorted возвращаться не планирует?
А в чём проблема сделать arraySort(x->x.1, groupArray((time,item)))
ну вот только если таскать с собой поле для сортировки – а их может быть много, и ввиду специфики задачи хотелось бы этого избежать
на столько, что уже в следующей минорной версии это может поменяться, ведь все предупреждены, что гарантий нет
вообще все не так. никакого отношения к Distributed. КХ таблица возвращает строки в рандомном порядке, для стабилизации порядка используется order by, подзапросы КХ выдают строки в стабильном порядке, поэтому РЕКОМЕНДУМАЯ конструкция это сюрприз SELECT groupArray(t.item) FROM (SELECT item FROM table ORDER BY time)
то есть groupArray все же порядок сохраняет, рандомность получается из-за непредсказуемого порядка получения записей в общем случае?
рандомность из того что в groupArray строки прилетают в рандомном порядке, подзапросы с order by возвращают строки в стабильном порядке
а с чего не должна? Это ж обычный плюсовый вектор под капотом (я подозреваю)
Обсуждают сегодня