Как посчитать active creators в SQL

Закрепи формулу active creators в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать active creators в Telegram

Зачем active creators

Active creators — те, кто реально публикует content. North Star для UGC-платформ. YouTube measure «monthly active creators», TikTok «daily active creators». В отличие от DAU (consumers), DAC сильно меньше — обычно 5-10% of DAU.

DAC, WAC, MAC

  • DAC (Daily Active Creators) — опубликовал 1+ post today
  • WAC (Weekly Active Creators) — 1+ post в неделю
  • MAC (Monthly Active Creators) — 1+ post в месяц

Stickiness = DAC / MAC (как DAU / MAU).

Active creators в SQL

SELECT
    DATE_TRUNC('day', created_at)::DATE AS day,
    COUNT(DISTINCT author_id) AS dac,
    COUNT(DISTINCT CASE WHEN created_at >= DATE_TRUNC('day', created_at) - INTERVAL '7 days' THEN author_id END) AS wac,
    COUNT(DISTINCT CASE WHEN created_at >= DATE_TRUNC('day', created_at) - INTERVAL '30 days' THEN author_id END) AS mac
FROM posts
WHERE created_at >= CURRENT_DATE - INTERVAL '60 days'
GROUP BY DATE_TRUNC('day', created_at);

Проще считать отдельными запросами для каждого window.

Stickiness creators

WITH daily_creators AS (
    SELECT DATE_TRUNC('day', created_at)::DATE AS day, author_id
    FROM posts
    WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
    GROUP BY DATE_TRUNC('day', created_at), author_id
),
mac_set AS (
    SELECT DISTINCT author_id FROM posts WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT
    COUNT(DISTINCT d.author_id) AS dac_average,
    (SELECT COUNT(*) FROM mac_set) AS mac,
    COUNT(DISTINCT d.author_id) * 30.0 / 30 / NULLIF((SELECT COUNT(*) FROM mac_set), 0) AS stickiness
FROM daily_creators d;

Stickiness 0.1 = средне (10% MAC posts each day). 0.3+ = excellent.

Закрепи формулу active creators в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать active creators в Telegram

Тренд

SELECT
    DATE_TRUNC('week', created_at)::DATE AS week,
    COUNT(DISTINCT author_id) AS wac
FROM posts
WHERE created_at >= CURRENT_DATE - INTERVAL '26 weeks'
GROUP BY DATE_TRUNC('week', created_at)
ORDER BY week;

WAC растёт = healthy. Flat / падает — flag.

Частые ошибки

Ошибка 1. Считать MAU как MAC. DAU и DAC — разные. Consumer ≠ creator.

Ошибка 2. Включать spam bots. Spam bot posts много, но не «real creator».

Ошибка 3. WAC vs MAC interchangeable. MAC всегда ≥ WAC ≥ DAC. Если WAC > MAC — bug.

Ошибка 4. Single window comparison. Compare 30-day vs 30-day, not 7 vs 30.

Ошибка 5. Игнорировать power law. Median creator might make 1 post/quarter. 1 post/month threshold каждого считает «active».

Связанные темы

FAQ

Active creator definition?

1+ posted item в window. Threshold можно повысить (e.g., 3+ posts/month).

DAC vs DAU?

DAU включает consumers. DAC — only creators. Обычно DAC = 5-10% DAU.

MAC growth target?

20-30% YoY для healthy growth. < 10% — saturation.

Stickiness creators benchmark?

0.1-0.15 — норма. 0.2+ — power user heavy. 0.05 — casual platform.

Track new vs returning creators?

Yes — new creator MAC growth важна. Returning shows retention.