Как посчитать WAU в SQL
Содержание:
Зачем WAU
В соцсетях и приложениях с недельной сезонностью (бизнес-инструменты, фитнес-приложения) DAU слишком волатилен, а MAU слишком сглаживает. WAU — компромисс: видишь недельный тренд без шума выходных и без потери deta.
Что такое WAU
WAU (Weekly Active Users) — уникальные пользователи, совершившие минимум одно действие за неделю.
WAU = COUNT(DISTINCT user_id) where date ∈ неделяБазовый расчёт
SELECT
DATE_TRUNC('week', event_date) AS week,
COUNT(DISTINCT user_id) AS wau
FROM events
WHERE event_date >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY 1
ORDER BY 1;DATE_TRUNC('week', ...) в Postgres начинает неделю с понедельника.
Calendar WAU vs Rolling 7-day
Calendar WAU
Активные за неделю (понедельник — воскресенье). Просто.
Rolling 7-day WAU
Активные за последние 7 дней. Гладкая кривая.
WITH dates AS (
SELECT generate_series(CURRENT_DATE - INTERVAL '90 days', CURRENT_DATE, INTERVAL '1 day')::DATE AS day
)
SELECT
d.day,
COUNT(DISTINCT e.user_id) AS rolling_wau
FROM dates d
JOIN events e
ON e.event_date > d.day - INTERVAL '7 days'
AND e.event_date <= d.day
GROUP BY d.day
ORDER BY d.day;WAU по сегментам
SELECT
DATE_TRUNC('week', e.event_date) AS week,
u.platform,
COUNT(DISTINCT e.user_id) AS wau
FROM events e
JOIN users u ON u.user_id = e.user_id
WHERE e.event_date >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY 1, 2
ORDER BY 1, wau DESC;Частые ошибки
Ошибка 1. Неполная неделя. Сегодня среда — неделя ещё не закончилась. Используйте week-to-date.
Ошибка 2. Понедельник vs воскресенье. В разных странах неделя начинается по-разному. Зафиксируйте.
Ошибка 3. Дубли user_id. DISTINCT не сработает на дублях с разными формами идентификатора. Нормализуйте.
Ошибка 4. Боты. Без фильтра — WAU завышен.
Ошибка 5. Timezone. DATE_TRUNC в UTC vs локальная зона — разные числа.
Связанные темы
FAQ
WAU или MAU?
WAU — для продуктов с weekly cadence. MAU — для retail / банков.
Calendar или rolling?
Rolling — лучше для трендов. Calendar — для отчётности.
WAU/MAU ratio?
Хорошие продукты: 0,5-0,7. Это значит, что лояльные юзеры заходят регулярно.
Какие изменения большие?
В стабильном продукте ±2-3% WoW WAU — норма. >5% — сигнал.
WAU упал — что делать?
Декомпозиция по новым / возвращающимся / churned. Найдите причину провала.