analytics/01_ПОЛНАЯ_СТРУКТУРА_PBI_И_SQL.md
2026-02-19 15:30:23 +03:00

312 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# База знаний: полная структура SQL (mag_pbi) и Power BI
> Извлечено из `analytics/sql_db_mag_pbi/mag_pbi_schema.sql` и `analytics/pbi/`. Независимый справочник для трассировки метрик и работы с данными.
---
## 1. Схемы базы данных mag_pbi
| Схема | Назначение |
|-------|------------|
| `pbi` | Основные таблицы и представления для Power BI |
| `analytics` | Дефицит, прогноз, аналитика за 365 дней |
| `pbiProd` | Сводная себестоимость, производство |
| `ostatki` | Резервы, очереди сборок, склад |
| `sebest` | Себестоимость до 2022 |
| `stg` | Staging (загрузка прогноза) |
| `artem` | Дополнительные данные |
| `dbo` | Стандартные таблицы |
---
## 2. Таблицы (CREATE TABLE)
### 2.1 Схема pbi
| Таблица | Ключевые колонки |
|--------|------------------|
| `pbi.pricelist` | Цена, Вид цены, 1c_id, artic_id, Дата, _Period |
| `pbi.Себестоимость` | id, Период, Статья, Вид операции, artic_id, Количество, Сумма, Закупка, Учетная цена, Номер заказа |
| `pbi.СебестоимостьПродажи` | id, 1c_id, artic_id, Количество, Закупка, sebes_id |
| `pbi.ostatki_short` | artic_id, 1c_id, Code, sklad, Категория склада, upakovok, quantity, date |
| `pbi.enums` | — |
| `pbi.nomenclature` | artic_id, 1c_id, code, description, group_id, Цена учетная руб/usd, minAvailableQty |
| `pbi.groups` | group_id, path, 1c_id |
| `pbi.w_ostatok_da_net` | dt, _IDRREF, artic_id, quantity, upakovok, ostatok, sellable_stock |
| `pbi.content_rating` | — |
| `pbi.direct_adv_costs` | — |
| `pbi.direct_orders` | — |
| `pbi.nomenclatureVolumeStorehouse` | — |
| `pbi.ostatki` | Остатки полные |
| `pbi.ostatki_mp` | Остатки МП |
| `pbi.Turnover` | — |
| `pbi.Себестоимость2023`, `Себестоимость2024` | — |
| `pbi.СебестоимостьДо2022Тест` | — |
| `pbi.СебестоимостьСводныйОт2022Тестовый` | — |
| `pbi.СебестоимостьПродажиОт2022` | — |
| `pbi.СебестоимостьПродажиТест`, `СебестоимостьТест` | — |
### 2.2 Схема analytics
| Таблица | Ключевые колонки |
|---------|------------------|
| `analytics.forecast` | id, scenario_id, 1c_id, code, month, value |
| `analytics.forecast_scenarios` | scenario_id, name |
| `analytics.deficit_proposal` | scenario_id, 1c_id, code, place_month, arrival_month, order_qty, projected_stock_at_T |
| `analytics.stock_plan_by_arrival` | — |
| `analytics.аналитика за 365 дн.` | Агрегаты ROIC, ТН, средний остаток |
| `analytics.manufacturers` | — |
| `analytics.manufacturer_payment_stage` | — |
| `analytics.manufacturer_counterparty_map` | — |
| `analytics.deficit_money_request` | — |
| `analytics.forecast_history` | — |
| `analytics.load_log_w_ostatok_da_net` | — |
| `analytics.sales_weekly_features` | — |
| `analytics.seasonality_groups` | — |
| `analytics.seasonality_groups_summ_1` | — |
| `analytics.stock_balance` | — |
| `analytics.прогноз из excel` | — |
| `analytics.срез учетных цен` | — |
### 2.3 Схема pbiProd
| Таблица | Назначение |
|---------|------------|
| `pbiProd.СебестоимостьСводныйОт2022` | Сводная себестоимость |
| `pbiProd.СебестоимостьОт2022` | Себестоимость от 2022 |
| `pbiProd.СебестоимостьДо2022` | До 2022 |
| `pbiProd.СебестоимостьПроизводствоОт2022` | Производство |
| `pbiProd.СебестоимостьИтогиДо2022` | — |
| `pbiProd.УчетнаяЦенаПоСебестоимости` | — |
| `pbiProd.GroupsOfNomenclature` | — |
| `pbiProd.НоменклатураВПроизводствеПоУровням` | — |
### 2.4 Схема stg
| Таблица | Назначение |
|---------|------------|
| `stg.forecast_load` | Staging загрузки прогноза из Excel |
### 2.5 Схема dbo
| Таблица | Назначение |
|--------|------------|
| `dbo.content_rating`, `grades_quartal` | — |
| `dbo.lineage_edges`, `lineage_objects` | — |
| `dbo.order_source`, `site_product` | — |
| `dbo.Turnover` | — |
| `dbo.yandex_direct_criteria_stats` | — |
---
## 3. Представления (CREATE VIEW)
### 3.1 Схема pbi
| View | Источник / логика |
|------|-------------------|
| `pbi.[Себестоимость+СебестоимостьПродаж]` | pbi.Себестоимость + СебестоимостьПродажи, подстановка цен из pricelist |
| `pbi.ОстаткиTotal` | ostatki_short, накопительный итог по складу/artic_id |
| `pbi.БазоваяУпаковка` | Габариты из MAG_2019 |
| `pbi.Заказы_тех` | Заказы поставщику |
| `pbi.РекламаМаркетплейсы` | Реклама МП |
| `pbi.Стоимость обработки заказа` | Стоимость МП |
| `pbi.Резервы` | Резервы |
| `pbi.Заказы` | Заказы |
| `pbi.Заявки_на_оплату` | Заявки |
| `pbi.Внешние остатки` | Внешние остатки |
| `pbi.Расходы по годам` | Расходы |
| `pbi.node_mp` | Узлы МП |
| `pbi.Внешние продажи` | Продажи МП |
| `pbi.nomeclature_for_pbi` | Номенклатура для PBI |
| `pbi.Заказы в заявках` | — |
| `pbi.[Себестоимость+СебестоимостьПродажОт2022]` | — |
| `pbi.Сборки`, `Сборки_комплекты` | — |
| `pbi.значения доп реквизитов номенклатуры` | — |
| `pbi.Сохраненные настройки 1С для PowerBI` | — |
### 3.2 Схема analytics
| View | Назначение |
|------|------------|
| `analytics.get_forecast_by_group` | Прогноз по группе (forecast + nomenclature + groups) |
| `analytics.get_forecast_scenarios` | Сценарии |
| `analytics.get_orders_list` | Список заказов |
| `analytics.get_analytics_by_group` | Аналитика по группе |
| `analytics.get_orders_by_group` | Заказы по группе (входящие) |
| `analytics.deficit_orders` | deficit_proposal + nomenclature (цена, сумма) |
| `analytics.nomenclature` | — |
| `analytics.Внешние остатки` | — |
| `analytics.Остатки МП` | — |
| `analytics.Где товар` | — |
| `analytics.Заявки_на_оплату` | — |
| `analytics.Заявки_без_проектаеоплачено` | — |
| `analytics.Ожидаемый расход` | — |
| `analytics.Ожидаемое_поступление` | — |
| `analytics.ForecastBasesKs` | Базы прогноза |
| `analytics.doprekvizit`, `doprekvizitvalues` | — |
| `analytics.images` | — |
| `analytics.Курсы валют на сегодня` | — |
| `analytics.Проекты` | — |
| `analytics.v_manufacturers_roi_compat` | — |
| `analytics.v_contractors`, `v_producers` | — |
| `analytics.v_manufacturer_counterparty_mapping` | — |
### 3.3 Схема pbiProd
| View | Назначение |
|------|------------|
| `pbiProd.[СводныйСебестоимость Для PBI]` | **Основной источник Себестоимости в PBI** |
| `pbiProd.СводныйСебестоимость` | — |
| `pbiProd.ИтогСебестоимостьПродажОт2022` | — |
### 3.4 Схема ostatki
| View | Назначение |
|------|------------|
| `ostatki.РезервыМПиОПТ` | Резервы МП и ОПТ |
| `ostatki.OstatkiMarketSklad` | — |
| `ostatki.МаркировкаОчередьВРАботе` | — |
| `ostatki.НаСогласовании` | — |
| `ostatki.ОчередьНаСборкуРазборку` | — |
| `ostatki.СборкиРазборкиВРаботе` | — |
| `ostatki.СобираетсяИКСборке` | — |
| `ostatki.СобраноНеОплачено` | — |
| `ostatki.ТоварыВПеремещении` | — |
---
## 4. Хранимые процедуры
### 4.1 analytics — дефицит и прогноз
| Процедура | Назначение |
|-----------|------------|
| `analytics.sp_build_deficit_proposal` | Расчёт дефицита и рекомендаций к заказу |
| `analytics.sp_rebuild_stock_plan_by_arrival` | План остатков по месяцам прихода |
| `analytics.sp_run_deficit_all_skus` | Пересчёт дефицита по всем SKU |
| `analytics.sp_build_forecast_s4_by_group` | Прогноз по группе |
| `analytics.sp_загрузка_прогнозаакупки` | Загрузка прогноза из Excel |
| `analytics.create_seasonality_groups` | Сезонность по группам |
| `analytics.sp_create_analytics_365` | Аналитика за 365 дней |
| `analytics.sp_load_koef_groups` | Коэффициенты групп |
| `analytics.sp_recalc_roic` | Пересчёт ROIC |
| `analytics.sp_report_ROI` | Отчёт ROI |
| `analytics.Подготовка таблицы продаж к прогнозу` | Подготовка продаж |
### 4.2 pbi — миграция
| Процедура | Назначение |
|-----------|------------|
| `pbi.migrate_ostatki` | Миграция остатков |
| `pbi.migrate_nomenclature` | Миграция номенклатуры |
| `pbi.migrate_groups` | Миграция групп |
| `pbi.migrate_pricelist` | Миграция прайс-листа |
| `pbi.migrate_stock_balance` | — |
| `pbi.migrate_max_year_quantity` | — |
| `pbi.migrate_uchet_summa` | — |
| `pbi.создание среза учетных цен` | Срез учётных цен |
| `pbi.[Заполнить себестоимостьОт2022(закупки+продажи)]` | — |
| `pbi.[Заполнить себестоимостьОт2022(СкладХранение)]` | — |
| `pbi.РасчетСебестоимостиОт2022` | — |
### 4.3 pbiProd — себестоимость
| Процедура | Назначение |
|-----------|------------|
| `pbiProd.ЗаполнитьСебестоимостьСводныйОт2022` | — |
| `pbiProd.[Пакетное: ...]` | Различные этапы заполнения себестоимости |
| `pbiProd.[Подготовка Производство: ...]` | Подготовка производства |
### 4.4 sebest — себестоимость до 2022
| Процедура | Назначение |
|-----------|------------|
| `sebest.Заполнить себестоимость до 2022` | — |
| `sebest.Заполнить себестоимость закупкой/продажей` | — |
| `sebest.Расчет себестомисти` | — |
---
## 5. Power BI — таблицы и источники
### 5.1 Таблицы модели (из TMDL)
| Таблица PBI | Режим | SQL источник |
|-------------|-------|--------------|
| Номенклатура | import | pbi.nomeclature_for_pbi |
| Партнер | import | pbi.Партнеры |
| Стоимость МП | import | pbi.[Стоимость обработки заказа] |
| Себестоимость | import | **pbiProd.[СводныйСебестоимость Для PBI]** |
| Основной отчет | import | Calculated (placeholder) |
| Группы | import | pbi.groups |
| Остатки | import | **pbi.ostatki_short** |
| Заявки на оплату | import | pbi.Заявки_на_оплату |
| План продаж менеджеров | import | pbi.ПланПродажМенеджеров |
| План продаж по группам | import | pbi.ПланыПродажПоГруппам |
| Менеджеры | import | pbi.users_1C |
| mp остатки | import | pbi.Внешние остатки |
| mp аналитика продаж | import | pbi.[Внешние продажи] |
| ПРАЙСлист | import | pbi.pricelist |
| Упущенные продажи | import | pbi.w_ostatok_da_net (+ трансформации) |
| Заказы все | import | pbi.Заказы |
| mp реклама | import | pbi.РекламаМаркетплейсы |
| План маркеты | import | — |
| Резервы | import | pbi.Резервы |
| Расходы по годам | import | pbi.[Расходы по годам] |
| Я.Директ расходы | import | pbi.direct_adv_costs |
| Я.Директ заказы | import | pbi.direct_orders |
| mp узел | import | pbi.node_mp |
| mp оборот | import | pbi.[Внешний оборот] |
| .Календарь | calculated | Calendar |
| LocalDateTable_* | calculated | Calendar по диапазону полей |
| Организация | calculated | VALUES(Себестоимость[Организация]) |
| Закупки | calculated | — |
| Параметр цена продажи, % | calculated | GENERATESERIES(-20, 20, 0.5) |
### 5.2 Сервер
- **Sql.Database("prdsql", "mag_pbi")** — основной источник
- **Sql.Databases("prdsql")** → mag_pbi — альтернативный доступ
### 5.3 Связи (relationships.tmdl)
- artic_id → Номенклатура._artic_id (Себестоимость, Остатки, mp остатки, Заказы все и др.)
- Период/Дата → .Календарь.Дата
- Номенклатура._group_id → Группы.group_id (bothDirections)
- Остатки.Дата → LocalDateTable (variation)
---
## 6. Цепочка дефицита и прогноза
```
forecast (analytics.forecast)
sp_build_deficit_proposal → deficit_proposal
sp_rebuild_stock_plan_by_arrival → stock_plan_by_arrival
Формула: closing = opening + inbound_confirmed + inbound_deficit - forecast_demand
```
**Источники:**
- opening_qty — pbi.w_ostatok_da_net (остаток на дату)
- Входящие заказы — статусы: В пути, В производстве, Выгружен на складе, Согласован
- Stock quantity — только `quantity` (не sellable_stock)
---
## 7. Ключевые таблицы для остатков
| Объект | Роль |
|--------|------|
| `pbi.ostatki_short` | Остатки для PBI (date, sklad, artic_id, quantity, upakovok) |
| `pbi.w_ostatok_da_net` | Остаток на дату, opening_qty, availability (ostatok) |
| `pbi.ostatki` | Полные остатки (накопительная) |
| Фильтр | `[Категория склада] <> 'Виртуальный'` — исключение МП из складского остатка |
---
*Справочник сформирован по mag_pbi_schema.sql и analytics/pbi.*