Перейти к содержимому

Практикум по аналитике закупок

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

Практикум устроен как работа с настоящей выгрузкой, только маленькой. Есть база из четырёх таблиц, есть вопросы, на которые надо ответить запросами. Каждый запрос на странице выполнен на этой базе, а вывод под ним — результат запуска, а не правдоподобные числа. Если у вас получилось другое — значит, у нас разные версии данных, и это стоит проверить до того, как делать выводы.

  • собрать локальную базу из двух SQL-файлов и убедиться, что она собралась;
  • посчитать ABC по затратам и увидеть, какие категории дают первые 80% бюджета;
  • посчитать XYZ по вариативности и отличить сезонный спрос от случайного;
  • оценить концентрацию закупок: доля топ-5 и индекс Херфиндаля — по портфелю и внутри категории;
  • найти дубли поставщиков и показать, как они искажают цифры;
  • посчитать экономию против базовой цены и не спутать её с переплатой;
  • посчитать время цикла медианой и хвостом, а не средним арифметическим.

Каждый урок идёт по одному сценарию:

Раздел Что в нём
Постановка Какой вопрос решаем и зачем это закупщику
Данные Какие таблицы нужны и что означает одна строка
Запрос SQL с комментариями по-русски
Вывод Настоящий результат этого запроса
Разбор Что видно в числах: три-пять выводов
Типичные ошибки Где обычно ломается расчёт и как не ломать

Один урок — один новый приём: оконная функция, коэффициент вариации, нормализация имён, перцентиль. Не пять техник сразу.

DuckDB ставится локально и работает с файлом, сервер не нужен. Из корня репозитория:

Окно терминала
cd scripts/practice-data
duckdb practice.duckdb < schema.sql
duckdb practice.duckdb < seed.sql

Проверка:

Окно терминала
duckdb practice.duckdb -c "SELECT count(*) FROM purchases"
┌──────────────┐
│ count_star() │
│ int64 │
├──────────────┤
│ 400 │
└──────────────┘

Подробнее — в уроке Сборка базы. Там же проверка всех четырёх таблиц и разбор того, что делать, если числа не сошлись.

  1. Сборка базы — две команды, проверка строк, типичные сбои при запуске.
  2. Датасет: таблицы и зерно — что означает строка в каждой таблице и какие аномалии заложены.
  3. ABC-анализ по сумме закупок — накопленная доля и границы групп.
  4. XYZ по вариативности — коэффициент вариации и сезонность.
  5. Концентрация поставщиков — доля топ-5, индекс Херфиндаля, дубли в справочнике.
  6. Экономия против базовой цены — факт, база и отрицательная экономия.
  7. Время цикла закупки — медиана, p90 и длинный хвост.