7.8 KiB
7.8 KiB
Структура аналитики: 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 Рекомендуемый порядок выполнения
- Прогноз:
create_forecast_loopИЛИsp_build_forecast_s4_by_groupИЛИsp_загрузка_прогноза_закупки - Дефицит:
sp_build_deficit_proposalИЛИsp_run_deficit_all_skus - План:
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)
Последовательность
- Найти меру в TMDL
- Показать DAX
- Указать зависимые меры/таблицы
- Извлечь SQL source из partition (Sql.Database, Schema, Item или Query)
- Сформировать объяснение
Формат вывода
- Measure Name
- DAX Formula
- Dependencies
- SQL Source (server, database, schema, object)
- Business Explanation
- Usage Recommendations
- Validation Checks
8. Workflow: Trace Deficit / Forecast
- Прогноз →
sp_build_deficit_proposal→ deficit_proposal - deficit_proposal + forecast + inbound →
sp_rebuild_stock_plan_by_arrival→ stock_plan_by_arrival - 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
- Структурированные объяснения метрик
- Соблюдение правил данных
- Не придумывать объекты схемы — только из файлов проекта
- Трассировка дефицита/прогноза с процедурами