Report Server Power BI vs Power BI
Описываю реальный кейс, реализованный мной в RSPBI.
Есть многостраничный отчёт
Показатели привязаны к менеджерам, отдельные колонки: Менеджер поставщика и Менеджер покупателя. При этом и один и тот же менеджер может встречаться в обеих колонках, но не обязательно. Таблиц-фактов несколько, и эти колонки с менеджерами есть в каждой.
Логика построения визуала линейная, 1 лист - 1 таблица фактов, два фильтра по колонкам: Менеджер поставщика и Менеджер покупателя (это помимо прочих).
В таком случае данные на листе меняются в зависимости о того, какого менеджера выбрали. Следующий лист > другая таблица.
Задача
Сделать лист, чтоб с одной стороны были данные по поставщику, с другой по покупателю, фильтр единый - Менеджер (это помимо прочих).
То есть выбрал менеджера, и сравниваешь показатели. Удобно.
Всё начинается со справочника менеджеров.
НО! Активные связи в таблицы-фактов в 2 колонки и по Менеджеру поставщика и по Менеджеру покупателя из справочника не установить.
🆘 Первое отличие, которое возникает при сравнении Power BI и RSPBI - отсутствие во втором связи “многие-ко-многим” в версиях до января 2024.
При попытке открыть в Power BI Desktop для Report Server файл, содержащий связи “многие-ко-многим” или составную модель, возникает ошибка:
«This file uses many-to-many relationships or a composite model which combines DirectQuery sources and/or imported data. These models aren't currently supported in Power BI Report Server»
Важное уточнение: Начиная с января 2024 года Microsoft официально добавила эту возможность .
Однако:
- Требуется строгое соответствие версий Report Server и Power BI Desktop
- Составные модели (composite models) по-прежнему не поддерживаются
Причём в ТГ звучала и фраза: кто использует связь “многие-ко-многим”, тот либо ничего не понимает, либо гений.
Ну, что сказать?
Использовала, и работало. Не думаю, что Майкрософт предлагает пользователям некорректно работающий функционал.
Решение в Power BI
▶ Создать справочник менеджеров (DISTINCT)
▶ Создать Таблицу-мост с двумя колонками: Менеджер и Комбинация
(составное поле Менеджер_поставщика| Менеджер_покупателя).
▶ В таблицах-фактов добавить аналогичную колонку Комбинация
⏩ Две односторонние связи:
Справочник > Таблица-мост (по полю Менеджер) один-ко-многим
Таблица-мост > Таблицы-фактов (по полю Комбинация) многие-ко-многим
Фильтр из справочника через таблицу-мост передаётся на уникальные комбинации, далее на таблицы-фактов
📊 Весь визуал строится на таблицах-фактах, т.к. логика живёт в модели.
Решение в Report Server Power BI
▶ Создание справочника менеджеров (DISTINCT)
❌ Связи не используются
⏩ Для каждого показателя пишется две DAX-меры-обёртки по соответствующей роли менеджера.
Итого: мер 30+ (ещё тестовые)
📊 Весь визуал строится на мерах, т.к. логика живёт в мерах. Атрибут, Поставщик, Покупатель и пр. брала из колонок таблиц-фактов.
Итак,
PBI
✅ несложно в поддержке (одна настройка модели)
✅ высокая производительность, фильтрация на уровне движка
⏩ трудоёмкость создания умеренная - доп.колонки и таблица-мост
RSPBI
⏩ высокая сложность поддержки, каждый показатель требует двух мер для каждой роли отдельно с привязкой к таблице-справочнику в формуле.
⏩ производительность снижается из-за кол-ва много мер и их сложности
⏩ трудоёмкость создания высокая из-за кол-ва мер помимо создания справочника
Вот здесь реально ощущаешь отличие рассуждений в чатах про плюсы/минусы инструментов от работы.
Всем успеха при создании проектов!