// uniqStateB
я могу делать SELECT day, uniqMerge(cnt) FROM mv GROUP BY day
и получу 2 числа - уникальные посетители для каждого дня
а могу SELECT uniqMerge(cnt) FROM mv WHERE day > today() - 2, и в результате получаю 1 число, которое является не просто суммой, а реальным значением uniq(userid) за _2_ дня.
На основании этого у меня есть догадка, что стейты для каждого из дней несут в себе достаточно данных, чтобы можно было их комбинировать, грубо говоря, я беру объединение двух множеств, а потом его мощность.
Вопрос в том, насколько реально выполнять другие операции, например, разницу тех же множеств? Даже теоретически, если сейчас такого кода нет, возможно ли такое?
Я вас понял, думаю что такое реализуемо в КХ
uniqState не хранит самих значений, он всякие хитрые алгоритмы и структуры использует. Поэтому из uniqState обратно уже ничего не извлечь. Разность скорее всего тоже невозможно. Теоретически это возможно с uniqExactState, но гораздо более естественно и без изменений кода можно добиться нужного вам эффекта с помощью groupUniqArrayState
Обсуждают сегодня