Практикум по аналитике закупок
Зачем практикум
Заголовок раздела «Зачем практикум»Методику можно прочитать и не суметь применить. Разница видна на первом же отчёте: в данных есть дубли, пустые поля, заказы без конкурса, и знакомые формулы начинают давать странные числа.
Практикум устроен как работа с настоящей выгрузкой, только маленькой. Есть база из четырёх таблиц, есть вопросы, на которые надо ответить запросами. Каждый запрос на странице выполнен на этой базе, а вывод под ним — результат запуска, а не правдоподобные числа. Если у вас получилось другое — значит, у нас разные версии данных, и это стоит проверить до того, как делать выводы.
Что вы умеете после курса
Заголовок раздела «Что вы умеете после курса»- собрать локальную базу из двух SQL-файлов и убедиться, что она собралась;
- посчитать ABC по затратам и увидеть, какие категории дают первые 80% бюджета;
- посчитать XYZ по вариативности и отличить сезонный спрос от случайного;
- оценить концентрацию закупок: доля топ-5 и индекс Херфиндаля — по портфелю и внутри категории;
- найти дубли поставщиков и показать, как они искажают цифры;
- посчитать экономию против базовой цены и не спутать её с переплатой;
- посчитать время цикла медианой и хвостом, а не средним арифметическим.
Как устроен урок
Заголовок раздела «Как устроен урок»Каждый урок идёт по одному сценарию:
| Раздел | Что в нём |
|---|---|
| Постановка | Какой вопрос решаем и зачем это закупщику |
| Данные | Какие таблицы нужны и что означает одна строка |
| Запрос | SQL с комментариями по-русски |
| Вывод | Настоящий результат этого запроса |
| Разбор | Что видно в числах: три-пять выводов |
| Типичные ошибки | Где обычно ломается расчёт и как не ломать |
Один урок — один новый приём: оконная функция, коэффициент вариации, нормализация имён, перцентиль. Не пять техник сразу.
Как собрать базу
Заголовок раздела «Как собрать базу»DuckDB ставится локально и работает с файлом, сервер не нужен. Из корня репозитория:
cd scripts/practice-dataduckdb practice.duckdb < schema.sqlduckdb practice.duckdb < seed.sqlПроверка:
duckdb practice.duckdb -c "SELECT count(*) FROM purchases"┌──────────────┐│ count_star() ││ int64 │├──────────────┤│ 400 │└──────────────┘Подробнее — в уроке Сборка базы. Там же проверка всех четырёх таблиц и разбор того, что делать, если числа не сошлись.
- Сборка базы — две команды, проверка строк, типичные сбои при запуске.
- Датасет: таблицы и зерно — что означает строка в каждой таблице и какие аномалии заложены.
- ABC-анализ по сумме закупок — накопленная доля и границы групп.
- XYZ по вариативности — коэффициент вариации и сезонность.
- Концентрация поставщиков — доля топ-5, индекс Херфиндаля, дубли в справочнике.
- Экономия против базовой цены — факт, база и отрицательная экономия.
- Время цикла закупки — медиана, p90 и длинный хвост.
Что читать дальше
Заголовок раздела «Что читать дальше»- Аналитика закупок — методика без запросов.
- ABC и XYZ анализ закупок — как читать матрицу.
- Время цикла закупки — откуда берутся отрезки.
- Мастер-данные закупок — почему справочник поставщиков важнее отчёта.