неделю (select week, uniq(cookie) from x group by week) - получаю 100 уников.
когда делаю группировку по дням (select day, uniq(cookie) from x group by day) - ожидаемо получаю больше, т.к. уникальные юзеры начинают считаться в рамках своего дня, а не всей недели.
подскажите, есть ли какая-нибудь функция, которая посчитает каждую уникальную cookie один раз в том дне, когда она появаилась первый раз?
лучше хранить дату первого появления/инстала
Храните по дням состояние юника. uniqState(cookie). Тогда при агрегации по таблице с этими состояниями по неделям или любым другим периодам получите правильные данные. Почитайте про AggregatingMergeTree и используйте на всякий случай FINAL в запросах
НЕ НАДО FINAL использовать с AggregatingMergeTree НИКОГДА надо просто использовать до аггрегацию с groupby
Хм, спасибо, посмотрю. У меня без final но с груп баем вылезали не самые ожидаемые результаты. С final окей
Как это поможет узнать дату первого появления?
Немного не дочитал, вы правы
Или через подзапрос находить min(date) для каждого cookie, и это не будет работать на реальных данных, или сразу писать это поле
select d, uniq(cookie) from (select cookie, min(day) d from table group by cookie) group by d 🤷♂️
Обсуждают сегодня