Войти Регистрация
Data base

116. Самые частые поля в логах сервиса

Средняя

ClickHouse · ClickHouse 26.3.57.12

Uber перевёл логи с ELK на ClickHouse. Схемы у логов нет: каждый лог раскладывается в пары массивов — имена полей и значения. Частые поля потом выносят в отдельные материализованные колонки, и для этого нужно знать, какие поля встречаются чаще.

Для каждого service верните два поля из string_names, которые встречаются в наибольшем числе логов: service, key, logs. Если ключ повторился внутри одного лога, лог считается один раз. При равенстве выше ключ, который раньше по алфавиту. Порядок — по service, logs по убыванию, key.

В работе: Выбор полей, которые стоит вынести в материализованные колонки.

Как проверяем Движка ClickHouse в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите все верные варианты (одна лишняя отметка допустима). После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
массивыARRAY JOINarrayDistinctLIMIT BYтоп-N в группе

Источник: кейс Uber: логи без схемы в ClickHouse, пары массивов имён и значений, 2021. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какие запросы вернут по два самых частых поля на сервис?

  • ARRAY JOIN arrayDistinct(string_names) и LIMIT 2 BY
  • ARRAY JOIN без arrayDistinct
  • arrayJoin в подзапросе и uniqExact(log_id)
  • LIMIT 2 без BY
  • LEFT ARRAY JOIN