Уважаемые слушатели! Обращаем ваше внимание, что 01.05.2024 и 09.05.2024 у нас выходные дни. Вы можете оставить сообщение в чате, мы обязательно ответим!

Отключайте неработающие связи между размерностями и мерами

Самородов Федор Анатольевич: Отключайте неработающие связи между размерностями и мерами

СФА

Работая с многомерными базами данных, вы наверняка наблюдали такой эффект, когда мера не делится по некоторым измерениям.

Вот я пытаюсь разложить показатели розничных продаж по реселлерам:

Отключайте неработающие связи между размерностями и мерами

Но ни количество проданных единиц товара, ни выручка не распадаются на слагаемые.

Такой же результат я наблюдаю, подключившись к базе из экселя:

Отключайте неработающие связи между размерностями и мерами

В этом нет ничего странного, потому что я пытаюсь проделать некорректную операцию. Если заглянуть в структуру куба, то мы увидим, что размерность реселлеров вообще никак не связана с розничными продажами. Срезы по реселлерам и их атрибутам имеют смысл при анализе оптовых продаж. А прикладывать их к рознице нет никакого смысла. Поэтому сервер и не может разложить розничные меры по значениям чисто оптового атрибута Reseller.[Business Type].

Отключайте неработающие связи между размерностями и мерами

В таких ситуациях сервер принудительно схлопывает не связанные с мерами иерархии до вамого верхнего уровня. Из-за этого в результате запроса итоговое значение просто дублируется.

Хорошо, что мы помним, как устроены наши кубы и не будем пытаться в запросах резать меры по несуществующим связям. Однако, отсутствие сообщения об ошибке или какого-то предупреждения означает, что пользователи время от времени будут пытаться строить некорректные отчёты и тратить время на поиск ошибок.

В конструкторе куба есть возможность устранить такую возможность. Это флаг IgnoreUnrelatedDimensions в настройках группы мер:

Отключайте неработающие связи между размерностями и мерами

По умолчанию он разрешает пользователю связывать в MDX-запросе что угодно с чем угодно.

Полезно сбросить этот флаг для устранения возможности случайно или в результате ошибки получить некорректные данные в отчётах:

Отключайте неработающие связи между размерностями и мерами

Теперь при попытке соединить несоединяемое сервер просто не будет выдавать какие-либо данные на несуществующих пересечениях. Никакой ошибки или предупреждения при этом по-прежнему не генериуется, но такое поведение всё равно лучше. Теперь пользователь быстрее обнаружит ошибку, поймёт её причину и не увидит в отчёте некорректные результаты.

Отключайте неработающие связи между размерностями и мерами

Ещё удобнее стало в Экселе. Я пытаюсь некорректно разложить меры по строкам, но даже сами значения атрибутов в сводной таблице не показываются:

Отключайте неработающие связи между размерностями и мерами

Однако, если вдруг потребуется вернуться к поведению по умолчанию, взводить флаг IgnoreUnrelatedDimensions и пересчитывать куб не потребуется. Имеется функцияValidMeasure, которая имитирует эту настройку и схлопывает несвязанные меры по верхнему уровню иерархии:

Отключайте неработающие связи между размерностями и мерами

Подробнее об этом Вы сможете узнать на курсе: М50578A: Язык запросов MDX для аналитических служб SQL Server (OLAP)

Ближайшие группы

Авторизации

Обратный звонок

Оставьте свои данные ниже и наш менеджер свяжется с вами в рабочее время!

Нажимая на кнопку, вы соглашаетесь с политикой конфиденциальности

Спасибо за обращение! Ваш менеджер свяжется с вами в рабочее время.