Бран · продюсер «Хроник Пограничья»
Каждый понедельник я пишу тебе одно и то же: сколько заработали, сколько людей играет, где теряем новичков, что покупают. Сделай так, чтобы я открывал одну страницу и видел всё сам.
Бран просит не отчёт, а дашборд. Отчёт отвечает на вопрос один раз, дашборд отвечает на одни и те же вопросы каждую неделю. В прошлых уроках мы строили по одному графику. Сегодня собираем из них страницу для одного читателя.
Приборная панель машины
На приборной панели нет всего, что знает машина. Там скорость, обороты, топливо и пара лампочек. Давление в каждом цилиндре водителю не нужно, его смотрит механик. Хорошая панель отвечает на вопросы того, кто сидит за рулём, и молчит про остальное.
Дашборд устроен так же. Сначала выпиши вопросы читателя, потом подбери под каждый вопрос одну карточку. У Брана вопросов четыре:
- Сколько заработали? Выручка по неделям, линия.
- Сколько людей играет? Средний DAU по неделям, линия.
- Где теряем новичков? Воронка от установки до первой покупки, столбцы.
- Что покупают? Топ офферов по выручке, столбцы.
Четыре вопроса, четыре карточки. Пятая карточка «на всякий случай» отнимает у читателя внимание, а ответа не добавляет.
Каждая карточка это запрос
В нашем мини-DataLens каждая карточка дашборда это обычный SQL-запрос и настройка графика к нему: тип, ось X и меры, как во вкладке «График» песочницы. Отдельного языка для дашбордов нет. Всё, чему мы научились в курсе, работает здесь без изменений.
Выручку берём чистую, как в боссе «Экономика Пограничья»: только оплаченные покупки, по одной на чек и без тестовых аккаунтов студии:
WITH clean AS (
SELECT * FROM purchases
WHERE status = 'paid'
AND id IN (SELECT min(id) FROM purchases GROUP BY receipt_id)
AND player_id NOT IN (SELECT id FROM players WHERE email LIKE '%@studio.dev')
)
SELECT date_trunc('week', created_at)::date AS week, sum(amount_rub) AS revenue
FROM clean
WHERE created_at < '2026-06-29'
GROUP BY week
ORDER BY week;
Сырые данные дают 1250 покупок на 726 433 ₽, чистые 1139 покупок на 657 756 ₽. Разница почти в 70 тысяч. Если на дашборд попадут сырые данные, Бран каждую неделю будет видеть выручку на 10% выше чистой.
DAU считаем без ботов и тестировщиков, как в уроке про DAU. Для недельной линии берём среднее DAU за неделю: число пар «игрок, день» делим на 7. Это не WAU: WAU считает каждого игрока недели один раз, а средний DAU показывает, сколько людей в игре в обычный день.
Воронка повторяет урок про воронки: шаги задаём через VALUES, чтобы порядок был наш, а не алфавитный. Топ офферов это GROUP BY по офферу и LIMIT 5.
Неполный период
Данные кончаются 30 июня, это вторник. Неделя с 29 июня в таблице есть, но в ней всего два дня. Чистая выручка за неё 2491 ₽ против 10-13 тысяч в соседних неделях, а средний DAU выходит 41 вместо 140. На линии это выглядит как обвал в последней точке, хотя игра в порядке.
Поэтому в карточках выручки и DAU стоит WHERE … < '2026-06-29': на дашборд попадают только полные недели. В живом дашборде то же правило звучит так: текущая неделя либо не рисуется, либо рисуется пунктиром с подписью «неделя не закончилась».
Ошибка аналитика
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.