В этой статье описывается датасет, который был сгенерирован для отработки мастерства кунг-фу в аналитике игровых данных, специально для проходящих обучение по игровой аналитике на нашем сайте. Датасет собран:
1. В виде базы данных sqlite3 из одного файла match3_analytics.bd, который упакован в архив match3_analytics.zip. На нем вы можете отрабатывать SQL запросы без установок баз данных и прочих сложных штук, скачиваете dbeaver и в путь. Как подключить базу данных к dbeaver и ее обзор смотри в моем коротком уроке.
2. В виде набора csv файлов match3_dataset.zip. На этом наборе вы сможете легко практиковаться в pandas в jupyter notebooks или PowerBI.

Папка с датасетом

📖 Обзор датасета

Этот датасет моделирует поведение игроков в условно-бесплатной мобильной игре жанра match-3 в течение 30 дней (ноябрь 2025 г.). Он содержит 50 000 синтетических игроков с реалистичными распределениями удержания, монетизации, игрового прогресса и вовлечённости в награды. Датасет специально разработан для образовательных целей в области гейм-аналитики, data science и бизнес-аналитики.

📁 Описание таблиц

👤 players.csv или players в базе данных (БД) — Профили игроков и LTV

Основная таблица-измерение. Одна строка на уникального игрока.

Колонка Тип Описание
player_id string (UUID) Уникальный идентификатор игрока. Первичный ключ
install_ts datetime (UTC) Время установки приложения / первого запуска
platform string Платформа устройства: ios или android
is_payer boolean 1, если игрок совершил ≥1 покупку, 0 иначе
first_purchase_ts datetime (UTC, nullable) Время первой покупки. NULL для F2P-игроков
total_revenue_usd float Совокупный доход с игрока (в долларах США)

⏱️ sessions.csv или sessions в базе данных (БД) — Игровые сессии

Агрегированные метрики сессий. У одного игрока может быть несколько сессий в день.

Колонка Тип Описание
session_id string (UUID) Уникальный идентификатор сессии. Первичный ключ
player_id string FK → players.player_id
start_ts / end_ts datetime (UTC) Время начала и окончания сессии
duration_sec int Длительность сессии в секундах
levels_started int Количество начатых уровней
levels_completed int Количество успешно пройденных уровней
lives_used int Потраченные жизни (1 за попытку)
lives_purchased boolean 1, если в сессии были куплены дополнительные жизни
boosters_used int Всего использовано бустеров (0–3)
session_type string normal или post_fail
event_active boolean 1, если сессия прошла во время ограниченного события

🎮 level_attempts.csv или level_attempts в базе данных (БД) — Детализация попыток уровней

Одна строка на каждую индивидуальную попытку прохождения уровня. Вложена в сессии.

Колонка Тип Описание
attempt_id string (UUID) Уникальный идентификатор попытки. Первичный ключ
player_id string FK → players.player_id
session_id string FK → sessions.session_id
level_num int Номер текущего уровня (начинается с 1)
start_ts / end_ts datetime (UTC) Время начала и окончания попытки
is_win boolean 1, если уровень пройден, 0 если провален
stars_earned int 1–3 звезды при победе, 0 при поражении
boosters_used_before int Бустеры, активированные до начала уровня
boosters_used_during int Бустеры, использованные в процессе уровня
extra_moves_purchased int Купленные дополнительные ходы после провала (0 если не было)
lives_cost_at_start int Жизни, потраченные на старт попытки (всегда 1)

🛒 purchases.csv или purchases в базе данных (БД) — Транзакции внутриигровых покупок

Все транзакции за реальные деньги. Включает контекстные поп-апы, покупки в магазине и пакеты.

Колонка Тип Описание
transaction_id string (UUID) Уникальный идентификатор транзакции. Первичный ключ
player_id string FK → players.player_id
ts datetime (UTC) Время покупки
amount_usd float Сумма транзакции (включает наценку 15% для iOS, где применимо)
product_id string Артикул: lives_5, moves_10, starter_pack, season_pass и др.
item_type string Категория: lives, boosters, moves, lives+boosters, season_pass
quantity int Количество полученных предметов
offer_type string Контекст предложения: regular, popup_after_fail, starter_pack, daily_deal, season_pass

🎁 daily_rewards.csv или daily_rewards в базе данных (БД) — Получение ежедневных наград

Отслеживает вовлечённость в календарь ежедневных наград. Стрик сбрасывается при пропуске.

Колонка Тип Описание
player_id string FK → players.player_id
day_num int День относительно установки (1–30)
claimed_ts datetime (UTC) Время получения награды (первая сессия дня)
reward_type string Тип награды: lives, coins или booster
reward_amount int Количество выданных предметов

💡 Примечание: claimed_ts имеет значение NULL, если день был пропущен. После любого пропуска стрик наград сбрасывается на День 1.

💰 in_game_currency.csv или in_game_currency в базе данных (БД) — Логи экономики и балансов

Неизменяемый журнал изменений внутриигровой валюты (soft/hard currency).

Колонка Тип Описание
event_id string (UUID) Уникальный идентификатор записи. Первичный ключ
player_id string FK → players.player_id
ts datetime (UTC) Время транзакции
currency_type string Тип валюты: coins, gems и др.
delta int Изменение баланса: + начислено, - списано
reason string Причина: level_win, daily_reward, purchase и др.
balance_after int Снимок баланса игрока после транзакции

🔗 Схема связей между таблицами

players (1) ──┬── (N) sessions ── (N) level_attempts
              ├── (N) purchases
              ├── (N) daily_rewards
              └── (N) in_game_currency

Все соединения выполняются по полю player_id. Поле session_id связывает таблицы sessionslevel_attempts.

⚠️ Важные примечания и ограничения

Аспект Детали
Происхождение данных Сгенерированы синтетически с использованием статистических распределений (Пуассона, Логнормальное, интерполированные кривые удержания). Не являются данными реальных пользователей.
Часовой пояс Все таймстампы в UTC. При необходимости конвертируйте в локальное время для анализа.
Пропущенные значения first_purchase_ts = NULL для is_payer=0. claimed_ts = NULL для пропущенных дней наград.
Хранение булевых значений В CSV: True/False. В SQLite: 1/0. Приводите типы при необходимости: CAST(is_payer AS BOOLEAN).
Первичные ключи UUID уникальны в пределах таблицы.
Ценообразование iOS Поле amount_usd включает симулированную наценку платформы 15% для соответствия требованиям App Store.