Бран · продюсер «Хроник Пограничья»
Инвесторы спросили, откуда в отчёте 6372 рубля за 27 марта. Я нашёл у себя три файла:
покупки_27.xlsx,покупки_27_итог.xlsxипокупки_27_итог_правка.xlsx. В них 8759, 6970 и 6372. Какой правильный? И как вы в агентстве храните расчёты, чтобы такого не было?
В прошлом уроке мы честно посчитали пятничную выручку Брана. Прошла неделя, и цифра уже потерялась среди трёх файлов с похожими именами. Так бывает с любым расчётом, у которого нет дома. Сегодня соберём рабочее место аналитика: где писать запросы, где считать на Python, как сложить файлы, зачем аналитику Git и куда записывать выводы. В конце ответим Брану, какой файл правильный.
Лабораторный журнал
Химик в лаборатории записывает каждый опыт в журнал: что хотел проверить, какие взял реактивы, что сделал, что получилось и что могло помешать. Через год другой химик откроет журнал и повторит опыт. Если результат не повторяется, это не открытие, а случайность.
У аналитика то же правило. Цифра чего-то стоит, только если её можно пересчитать с нуля и получить то же самое. Это свойство называют воспроизводимостью. Всё рабочее место аналитика устроено ради неё: запрос лежит в файле, данные лежат нетронутыми, каждый шаг подписан.
Где пишут запросы: SQL-клиент и BI
В уроке про инструменты ты уже встретил SQL-клиент. Теперь заглянем внутрь. Возьмём DBeaver (у него есть бесплатная версия) или DataGrip от JetBrains. Оба устроены похоже:
- слева дерево подключений: хранилище, в нём схемы, в схемах таблицы и столбцы;
- в центре редактор запроса с подсветкой и подсказками имён столбцов;
- внизу результат таблицей, которую можно выгрузить в CSV или Excel.
Подключаются из клиента к хранилищу, а не к боевой базе, мы это обсуждали в уроке про данные. И главная привычка: запрос, который дал цифру для заказчика, не остаётся в несохранённой вкладке. Его сохраняют файлом с понятным именем в папку проекта. Вкладку закроет обновление клиента, а файл останется.
Регулярные расчёты переезжают в BI: запрос живёт внутри дашборда и пересчитывается сам. Разовые расчёты живут в клиенте и в папке проекта. В курсе клиент встроен в урок: со следующего урока ты пишешь запросы прямо на странице.
Где живёт Python: Jupyter или VS Code
Для Python у аналитика обычно ноутбук Jupyter: документ из ячеек, где код, результат и пояснения лежат рядом. Это удобно для исследования: запустил ячейку, посмотрел на таблицу, поправил, запустил снова.
Второй вариант это редактор VS Code. Он открывает ноутбуки .ipynb прямо у себя, а рядом в том же окне держит .sql-файлы, README и терминал. Выбирай, что удобнее: файлы получаются одни и те же. Как поставить Python и запустить первый ноутбук, разберём в уроке про блокнот, когда дойдём до Python.
Папка проекта
Один вопрос заказчика, одна папка. Вот как могла бы выглядеть папка для пятничной выручки Брана:
friday-revenue/
├── README.md вопрос, как повторить расчёт, где записка
├── data/
│ ├── raw/ выгрузки как есть, руками не правим
│ │ └── purchases_2026-03-27.xlsx
│ └── clean/ результат чистки, его можно пересоздать
├── queries/
│ ├── 01_purchases_day.sql покупки за день из хранилища
│ └── 02_revenue_by_platform.sql
├── notebooks/
│ └── 01_revenue_check.ipynb проверки и график
└── .gitignore что не уходит в Git
Четыре правила этой папки:
data/raw/только для чтения. Это та же привычка, что в прошлом уроке: исходную выгрузку не трогаем, чистка идёт в отдельный файл или в запрос.- Номера в именах.
01_,02_показывают порядок шагов. Новичок по ним пройдёт расчёт сверху вниз. - Никаких
итог_правка_новый. Версия файла живёт в истории Git, а не в его имени. - README в корне. Три-пять строк: какой вопрос, откуда данные, в каком порядке запускать.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.