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

⏩ высокая сложность поддержки, каждый показатель требует двух мер для каждой роли отдельно с привязкой к таблице-справочнику в формуле.

⏩ производительность снижается из-за кол-ва много мер и их сложности

⏩ трудоёмкость создания высокая из-за кол-ва мер помимо создания справочника

Вот здесь реально ощущаешь отличие рассуждений в чатах про плюсы/минусы инструментов от работы.

Всем успеха при создании проектов!

Картинкой схема, вымученная с ИИ, и всё равно доделывала в Figma
Картинкой схема, вымученная с ИИ, и всё равно доделывала в Figma
Начать дискуссию