и решение через arrayEnumerateDense работает
SELECT
flatten(groupArray(arrayDistinct(srcArr.1) AS dstctArr)) AS key,
sumResampleArray(1, 10, 1)(srcArr.2, arrayEnumerateDense(srcArr.1))
FROM
(
SELECT groupArray((toUInt8(rand(1) % 10), number)) AS srcArr
FROM numbers(10000000)
)
FORMAT Null
а этот запрос сколько?
ещё лучше <Debug> MemoryTracker: Peak memory usage (for query): 592.17 MiB. 1 rows in set. Elapsed: 0.621 sec. Processed 10.03 million rows, 80.22 MB (16.15 million rows/s., 129.16 MB/s.)
только у вас опять подразумевается что порядок выхода дистинкта совпадает с порядком массива. этой гарантии нет.
arrayEnumerateDense - будет нумеровать в порядке массива - нет проблем а вот distinct такое не обещает.
Обсуждают сегодня