Как найти Aha-moment в SQL
Содержание:
Зачем Aha-moment
Facebook нашёл свой aha-moment: «7 friends in 10 days». Если новый юзер достигал этого — retention rocket. Если нет — отвал. Aha-moment — действие или milestone, которое разделяет retained и churned.
Подход к расчёту
- Identify candidate actions (типа number of X in Y days).
- Compute retention для users, achieved action vs not.
- Найдите gap > 2x — это aha-moment.
Базовый расчёт
Допустим, hypothesis: «added 3 friends in first week».
WITH new_users AS (
SELECT user_id, signup_date
FROM users
WHERE signup_date >= CURRENT_DATE - INTERVAL '90 days'
),
friend_count_w1 AS (
SELECT
n.user_id,
n.signup_date,
COUNT(*) AS friends_added_w1
FROM new_users n
LEFT JOIN friend_events f
ON f.user_id = n.user_id
AND f.event_date BETWEEN n.signup_date AND n.signup_date + INTERVAL '7 days'
GROUP BY n.user_id, n.signup_date
),
retention AS (
SELECT
f.user_id,
f.friends_added_w1,
CASE
WHEN EXISTS (
SELECT 1 FROM events e
WHERE e.user_id = f.user_id
AND e.event_date BETWEEN f.signup_date + INTERVAL '30 days'
AND f.signup_date + INTERVAL '60 days'
) THEN 1 ELSE 0
END AS retained_d30
FROM friend_count_w1 f
)
SELECT
CASE
WHEN friends_added_w1 = 0 THEN '0 friends'
WHEN friends_added_w1 BETWEEN 1 AND 2 THEN '1-2 friends'
WHEN friends_added_w1 BETWEEN 3 AND 5 THEN '3-5 friends'
ELSE '6+ friends'
END AS bucket,
COUNT(*) AS users,
AVG(retained_d30) * 100 AS retention_d30_pct
FROM retention
GROUP BY 1
ORDER BY 1;Если retention для «3-5» 60% vs «1-2» 20% — aha-moment near 3.
По сегментам
-- Aha-moment может отличаться по acquisition channel
WITH ... -- same logic
SELECT
u.acquisition_channel,
AVG(CASE WHEN friends_added_w1 >= 3 THEN retained_d30 END) * 100 AS retention_if_aha_hit,
AVG(CASE WHEN friends_added_w1 < 3 THEN retained_d30 END) * 100 AS retention_if_not
FROM users u
JOIN retention r ON r.user_id = u.user_id
GROUP BY u.acquisition_channel;Частые ошибки
Ошибка 1. Causation vs correlation. Юзеры с 5 friends в week 1 retained лучше — это потому что friends → retention или engaged users → friends + retention? Возможно selection bias.
Ошибка 2. Single-action aha. Real aha — комбо: «friends + posts + likes». ML / decision tree находит лучше.
Ошибка 3. Period mismatch. Action в week 1 → retention в month 1. Можно ли action в month 1 → retention в month 2? Зависит от продукта.
Ошибка 4. Threshold arbitrary. «3 friends» — где gap? Не «3 потому что красивая цифра», а «retention plot показывает knee at 3».
Ошибка 5. Игнорировать sample size. Если в bucket 10 юзеров — retention 100% или 0% — noise.
Связанные темы
- Aha-moment простыми словами
- Как посчитать retention в SQL
- Как посчитать activation в SQL
- Как посчитать cohort retention в SQL
FAQ
Aha-moment у каждого продукта?
Да. Найти — половина победы. Twitter — 30 follows. Slack — 2000 messages. Dropbox — 1 file shared.
Aha vs Activation?
Activation — первая успешная интеграция продукта. Aha — milestone предсказывающий retention. Часто одно и то же.
Как тестировать гипотезу aha?
A/B: одна группа nudge'ится к aha (notifications), другая нет. Retention должна расти у первой.
Aha меняется со временем?
Да. Новые features могут менять aha-moment. Re-find раз в год.
Можно ли несколько aha?
В сложных продуктах — да. Onboarding aha, growth aha, retention aha — разные.