# База знаний: полная структура 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.*