All streams
Search
Write a publication
Pull to refresh
2
0
Влад Божьев @NeTRuS-Dev

Backend Engineer

Send message

На самом деле мы не полный group by d1, d2, ..., dn делаем, а группировку по кубам через GROUPING SETS (CUBE(d1, d2, d3), CUBE(d4, d5)) , что позволяет сузить количество комбинаций до сабтоталов каждого куба.
А подробнее мы расскажем в отдельной статье)

В рамках статьи я фокусировался на хранении и оптимизации чтения отчётов, поэтому trino и расчёт остался за кадром.
В общих чертах всё верно в вашем вопросе) Конечно, из-за наших объёмов данных есть большое количество оптимизаций и мы планируем про compute выпустить отдельную статью.
Ставьте лайки, подписывайтесь на канал, как говорится)

тут есть 2 варианта в зависимости от объёма заменяемых данных
либо дропаем партиции либо помечаем на удаление нужные участки
В Clickhouse удаление через alter table асинхронное и в случае с пересчётами нам eventual consistency достаточно

Хороший вопрос) Изначально служебные значения мы проектировали по принципу "как удобно для аналитика", те выбирали относительно красивые значения (-1, Any).
Идея автоматизировать расширение набора разрезов (колонок) пришла вместе с органическим ростом платформы, поэтому нам потребовалась миграция

Отличный вопрос! Во избежание таких ситуаций мы при пересчётах чистим старые данные перед выгрузкой новых.
Но, грубо говоря, есть кейсы когда мы уверены что данные не поедут или пересчёт технический а не продуктовый, тогда delete не выполняется и ReplacingMT проявляется по полной

Кроме того, ReplacingMT защищает от дублирования при вставке из аналитического движка (считаем на Trino)

На самом деле мы стараемся бессмысленные комбинации не делать, но узнать сколько продалось валенок в Краснодаре в каждый день/месяц года, когда в Краснодарском крае было минус любое количество градусов - действительно валидный кейс для нашей платформы

Авито — это не просто доска объявлений)
Это масштабная технологическая платформа с глубокой структурой. Бизнес Авито делится на вертикали (например, недвижимость, авто, услуги, товары) и горизонтали (поиск, монетизация, рекомендации, и др.). Каждая из этих бизнес-областей имеет свои специфические запросы к аналитике, что требует отдельного набора метрик.

Много команд → много специфичных потребностей.
Метрики отражают как продуктовую логику внутри вертикали, так и кросс-продуктовые потребности горизонталей. Глубина аналитики также различается: где-то важно отслеживать поведение пользователей, где-то — эффективность ML-модели в поиске или работу поддержки.

В результате формируется целая система метрик: технических, продуктовых и бизнесовых, доступ к которым и предоставляет наша платформа

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead