
Комментарии 2
Спасибо за читабельное описание sequenceMatch/sequenceCount/windowFunnel, а то иногда оно вроде надо было, но в доке как-то неочевидно описано, что я забивал разбираться надо оно мне или нет.
В комментариях расскажите, какие "непопулярные" функции кликхаус успростили вам жизнь.
Мой фаворит cityHash64(). Когда надо сджойнить или посчитать юники по строкам или по набору колонок, а сами значения этих колонок не нужны, то гораздо дешевле загнать всё это в cityHash64() (лучше cityHash64(tuple()), чтобы с null норм было) и посчитать по одному целому числу, чем по тяжелым строкам или набору колонок. Тоже самое при проверке на IN: cityHash64((col1, col2)) IN (select cityHash64((col1, col2)) ...). И когда сэмплирование надо сделать, тоже пригождается: where cityHash64(id) % 100 < 10.
Ну и assumeNotNull(), избавляющий от злобного Nullable (осторожно, есть нюансы с Nullable(Enum)).
Понял, что я уже травмирован clickhouse как специалист тогда, когда стал видеть возможности элегантно применить комбинации groupArray и arrayJoin, например перед вставкой в ReplacingMergeTree для того чтобы посчитать метрики для одного набора ключей, а все остальные занулить
Или, например, догегеривать с помощью массивов событие за сегодня как (event_day, today()), разбивать arrayJoin’ом и потом интеполировать все события между ними для витрины
Не только sum() и uniq(): малоизвестные и очень полезные функции ClickHouse