0 задачЛёгкие, средние, сложныеС эталонными решениямиРешение в браузере
ClickHouse-массивы — киллер-фича для аналитики событий. Хранить массив товаров в одной строке заказа, фильтровать через has(), джоинить через arrayJoin. На собесах Yandex/Avito/Wildberries это спрашивают на Middle-Senior. 8 задач на arrays.
Денормализация для скорости: вместо JOIN orders + order_items хранить items как Array(String) в orders. arrayJoin разворачивает обратно для аналитики. Запросы в 10x быстрее JOIN.
Чем arrayJoin отличается от обычного JOIN?
arrayJoin — НЕ JOIN таблиц. Это unnest: один массив → много строк. Аналог UNNEST в PostgreSQL или LATERAL VIEW EXPLODE в Hive.
Как проверить наличие элемента в массиве?
has(arr, value) — true/false. indexOf(arr, value) — позиция (0 если нет). hasAll(arr, [a,b,c]) — все ли из b,c есть.