Раздел 42 · Аналитика данных с нуля

Инструменты аналитика

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Ильва · геймдизайнер «Эпохи Корон»

Мне коллега прислал запрос из нашей статистики, я вставила его в вашу программу, а она ругается. Это же SQL? Почему не работает? И что мне поставить, чтобы смотреть цифры самой?

Ильва работает в другой студии, «Эпохи Корон», и данные у неё лежат в другой системе. В прошлом уроке ты научился превращать вопрос в запрос. Сегодня разберёмся, чем этот запрос писать и где запускать, почему SQL бывает разным и какие инструменты лежат рядом с ним на столе у аналитика. В конце объясним Ильве, что случилось.

Ящик с инструментами

У мастера в ящике молоток, отвёртка, рулетка и дрель. Никто не спорит, что лучше, молоток или отвёртка: каждый для своего. Плохой мастер забивает шурупы молотком, потому что молоток уже в руке.

У аналитика в ящике четыре главных инструмента. Вот что умеет каждый и когда за него браться.

SQL и клиент

SQL это язык, на котором спрашивают базу данных: «дай покупки за май, сгруппируй по дням, посчитай сумму». Это главный инструмент аналитика, и большая часть курса про него.

Запросы пишут в SQL-клиенте: в программе, где есть окно для текста запроса, кнопка «выполнить» и таблица с результатом. Популярные клиенты это DBeaver и DataGrip, в консоли работает psql, а у облачных хранилищ есть своя веб-консоль. В нашем курсе клиент встроен прямо в урок: начиная со следующего урока ты будешь писать запросы к базе «Хроник Пограничья» guild, не выходя со страницы.

Почему SQL бывает разным

SQL общий, но у каждой базы свой диалект. Это как русский язык в Москве и в Ростове: основа одна, но некоторые слова свои. SELECT, WHERE, GROUP BY, JOIN работают везде. А функции дат, условные подсчёты и кавычки различаются.

Посчитаем оплаченные покупки по месяцам в четырёх популярных базах.

PostgreSQL, на нём учит этот курс:

SELECT date_trunc('month', created_at) AS month,
       count(*) FILTER (WHERE status = 'paid') AS paid
FROM purchases
GROUP BY 1;

ClickHouse, быстрая аналитическая база, часто стоит в хранилищах игровых студий:

SELECT toStartOfMonth(created_at) AS month,
       countIf(status = 'paid') AS paid
FROM purchases
GROUP BY month;

BigQuery, облачное хранилище Google, таблицы адресуются через проект и набор данных в обратных кавычках:

SELECT DATE_TRUNC(DATE(created_at), MONTH) AS month,
       COUNTIF(status = 'paid') AS paid
FROM `studio.analytics.purchases`
GROUP BY month;

MySQL, частый гость в продовых базах сайтов:

SELECT DATE_FORMAT(created_at, '%Y-%m') AS month,
       SUM(status = 'paid') AS paid
FROM purchases
GROUP BY month;

Смысл одинаковый, слова разные. Хорошая новость: выучив один диалект как следует, на другой переходишь за неделю, подглядывая в документацию. Различия диалектов подробно разберём ближе к концу курса.

урок из курса

Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.