Ильва · геймдизайнер «Эпохи Корон»
Мне коллега прислал запрос из нашей статистики, я вставила его в вашу программу, а она ругается. Это же 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 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.