ClickHouse · ClickHouse 26.3.57.12
Uber перевёл логи с ELK на ClickHouse. Схемы у логов нет: каждый лог раскладывается в пары массивов — имена полей и значения. Частые поля потом выносят в отдельные материализованные колонки, и для этого нужно знать, какие поля встречаются чаще.
Для каждого service верните два поля из string_names, которые встречаются в наибольшем числе логов: service, key, logs. Если ключ повторился внутри одного лога, лог считается один раз. При равенстве выше ключ, который раньше по алфавиту. Порядок — по service, logs по убыванию, key.
В работе: Выбор полей, которые стоит вынести в материализованные колонки.
Источник: кейс Uber: логи без схемы в ClickHouse, пары массивов имён и значений, 2021. Условие пересказано своими словами.
Какие запросы вернут по два самых частых поля на сервис?
- ARRAY JOIN arrayDistinct(string_names) и LIMIT 2 BY
- ARRAY JOIN без arrayDistinct
- arrayJoin в подзапросе и uniqExact(log_id)
- LIMIT 2 без BY
- LEFT ARRAY JOIN