analytics/STRUCTURE.md
2026-02-18 14:36:38 +03:00

7.8 KiB
Raw Blame History

Структура аналитики: SQL и Power BI

Справочник, объединяющий правила из context/*.md со структурой БД и PBI-модели.


1. Правила данных (01_DATA_RULES)

Правило Описание
Stock quantity Только поле quantity. Никогда не использовать sellable_stock в расчётах остатков
MP stock Остатки маркетплейса считаются отдельно и добавляются при необходимости
Входящие заказы Статусы: В пути, В производстве, Выгружен на складе, Согласован
Интервалы дат Формат [start, end) (полуоткрытый интервал) при агрегации

2. Глоссарий (02_GLOSSARY)

Термин Значение
Stock (шт) Физическое количество по полю quantity
Stock (руб) Денежная оценка остатков
MP Marketplace (маркетплейс)
Data mart SQL view/table, подготовленная для аналитики

3. SQL: Таблицы (analytics schema)

3.1 Дефицит и прогноз

Таблица Назначение Ключевые поля
analytics.forecast Прогноз спроса по месяцам scenario_id, 1c_id, code, month, value
analytics.deficit_proposal Рекомендации к заказу по дефициту place_month, arrival_month, order_qty
analytics.stock_plan_by_arrival План по месяцам прихода opening, inbound_confirmed, inbound_deficit, forecast_demand, closing
analytics.forecast_scenarios Сценарии прогноза scenario_id, name
analytics.seasonality_groups Сезонность по группам (для sp_build_forecast_s4_by_group)
stg.forecast_load Staging загрузки прогноза из Excel

3.2 Справочники и остатки (pbi schema)

Таблица Назначение
pbi.nomenclature Номенклатура (minAvailableQty для minAvailable)
pbi.groups Группы (path для group_path)
pbi.w_ostatok_da_net Остаток на дату (для opening_qty)

4. SQL: Представления (Views)

View Назначение Источники
analytics.get_orders_by_group Входящие заказы по группе Заказы со статусами 01_DATA_RULES
analytics.get_quantity_by_group Остаток склада по группе quantity (не sellable_stock)
analytics.get_mp_quantity_by_group MP-остатки по группе
analytics.get_forecast_by_group Прогноз по группе analytics.forecast
analytics.get_forecast_scenarios Сценарии прогноза analytics.forecast_scenarios
analytics.deficit_orders Заказы по дефициту с ценой и суммой deficit_proposal + nomenclature (status='Дефицит')

5. SQL: Хранимые процедуры

5.1 Цепочка дефицита (06_DEFICIT_FORECAST)

forecast → sp_build_deficit_proposal → deficit_proposal
                      ↑                              ↓
stock + inbound +     │              sp_rebuild_stock_plan_by_arrival
minAvail              └──────────────────── stock_plan_by_arrival

5.2 Процедуры

Процедура Назначение Параметры по умолчанию
sp_build_deficit_proposal Дефицит и рекомендации к заказу @scenario_id=4, @group_path='', @lead_time_m=4, @cover_months=6
sp_rebuild_stock_plan_by_arrival План остатков по месяцам прихода @scenario_id, @from_month, @to_month
sp_run_deficit_all_skus Пересчёт дефицита по всем SKU Вызывает sp_build_deficit_proposal с group_path=''
create_forecast_loop Цикл по группам (lvl=2)
sp_build_forecast_s4_by_group Прогноз по группе (rate×дни×seasonal_koef) Вставляет в forecast
sp_загрузка_прогнозаакупки Загрузка прогноза из Excel forecast scenario_id=8

5.3 Рекомендуемый порядок выполнения

  1. Прогноз: create_forecast_loop ИЛИ sp_build_forecast_s4_by_group ИЛИ sp_загрузка_прогнозаакупки
  2. Дефицит: sp_build_deficit_proposal ИЛИ sp_run_deficit_all_skus
  3. План: sp_rebuild_stock_plan_by_arrival (читает deficit_proposal; п.2 должен быть выполнен первым)

5.4 Формула closing (stock_plan_by_arrival)

closing = opening + inbound_confirmed + inbound_deficit - forecast_demand

6. Power BI: Модель (TMDL)

6.1 Таблицы модели (PBI QueryOrder)

Таблица Источник
Номенклатура Sql.Database
Партнер Sql.Database
Стоимость МП Sql.Database
Основной отчет Sql.Database
Группы Sql.Database
Остатки Sql.Database
Закупки Sql.Database
Заявки на оплату Sql.Database
План продаж менеджеров Sql.Database
План продаж по группам Sql.Database
Менеджеры Sql.Database
mp остатки Sql.Database
mp аналитика продаж Sql.Database
ПРАЙСлист Sql.Database
Заказы все Sql.Database
... (см. model.tmdl)

6.2 Связи и меры

  • Связи: relationships.tmdl
  • Меры: expressions.tmdl, таблицы .tmdl в Model/tables/
  • Культура: ru-RU
  • Compatibility level: 1600

7. Workflow: Trace Measure (03_WORKFLOWS, 05_OUTPUT_FORMATS)

Последовательность

  1. Найти меру в TMDL
  2. Показать DAX
  3. Указать зависимые меры/таблицы
  4. Извлечь SQL source из partition (Sql.Database, Schema, Item или Query)
  5. Сформировать объяснение

Формат вывода

  1. Measure Name
  2. DAX Formula
  3. Dependencies
  4. SQL Source (server, database, schema, object)
  5. Business Explanation
  6. Usage Recommendations
  7. Validation Checks

8. Workflow: Trace Deficit / Forecast

  1. Прогноз → sp_build_deficit_proposal → deficit_proposal
  2. deficit_proposal + forecast + inbound → sp_rebuild_stock_plan_by_arrival → stock_plan_by_arrival
  3. order_qty = прогноз окна [T .. T+cover); дефицит при net_stock < minAvailable

9. Knowledge Base Policy (04_KB_POLICY)

  • Новая документация — черновик
  • Только утверждённое содержание — в общую базу знаний
  • Хранить в /docs/metrics
  • Каждая статья: DAX, SQL lineage, бизнес-объяснение

10. AI Architect (00_SYSTEM)

  • Трассировка мер от TMDL к SQL
  • Структурированные объяснения метрик
  • Соблюдение правил данных
  • Не придумывать объекты схемы — только из файлов проекта
  • Трассировка дефицита/прогноза с процедурами