Назад к подготовке

API и bucket sizes для CTR dashboard

Dashboard должен показывать CTR за минуты, 5 минут и часы. Как спроектировать API и хранение bucket-агрегатов?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

API читает агрегаты по campaign_id, диапазону времени и bucket size. Лучше хранить clicks/impressions и пересчитывать CTR, а не только ratio.

Полный разбор

Запрос обычно выглядит как campaign_id + from/to + granularity. Для свежих данных можно отдавать minute buckets, для истории - 5m/hour/day rollups. Rollups можно считать заранее или on read, если объем позволяет.

Незакрытые окна нужно явно помечать или обновлять upsert-ом, иначе график будет прыгать и вводить пользователя в заблуждение. При агрегации нельзя усреднять CTR по окнам напрямую: нужно суммировать clicks и impressions, а потом делить.