315 lines
16 KiB
Markdown
315 lines
16 KiB
Markdown
# База знаний: полная структура 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` | scenario_id, manufacturer_id, contractor_1c_id, arrival_month, amount_rub/usd |
|
||
| `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_fill_deficit_money_request` | Заполнение заявок на оплату по дефициту (manufacturers + contractor) |
|
||
| `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_fill_deficit_money_request → deficit_money_request (заявки на оплату по производителям)
|
||
↓
|
||
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.*
|