logo Фёдор Самородов

Как написать динамический MDX-запрос

Есть ‎два‏ ‎популярных ‎сценария ‎использования ‎динамических ‎MDX-запросов:‏ ‎сложная ‎параметризация‏ ‎и‏ ‎контекстно-зависимые ‎запросы. ‎Да,‏ ‎бывает, ‎что‏ ‎без ‎динамических ‎MDX-запросов ‎не‏ ‎обойтись.‏ ‎На ‎этот‏ ‎случай ‎имеются‏ ‎четыре ‎инструмента ‎— ‎они ‎предназначены‏ ‎как‏ ‎раз ‎для‏ ‎конструирования ‎запросов‏ ‎«на ‎лету».

Все ‎умеют ‎писать ‎динамические‏ ‎SQL-запросы.‏ ‎Составляем‏ ‎строку ‎и‏ ‎передаём ‎её‏ ‎команде ‎EXECUTE или‏ ‎процедуре‏ ‎sp_ExecuteSQL:

Многие ‎также‏ ‎в ‎курсе, ‎чем ‎эти ‎два‏ ‎способа ‎различаются.‏ ‎А‏ ‎что ‎насчёт ‎динамических‏ ‎MDX-запросов?

Ведь ‎в‏ ‎языке ‎MDX ‎синтаксические ‎ограничения‏ ‎заметно‏ ‎более ‎суровы,‏ ‎чем ‎в‏ ‎SQL, ‎и ‎без ‎динамического ‎формирования‏ ‎MDX-выражений‏ ‎бывает ‎тяжело.

Для‏ ‎работы ‎с‏ ‎динамическими ‎запросами ‎в ‎MDX ‎имеется‏ ‎набор‏ ‎функций,‏ ‎названия ‎которых‏ ‎начинаются ‎с‏ ‎«StrTo»:

  • StrToMember
  • StrToSet
  • StrToTuple
  • StrToValue

В ‎отличие‏ ‎от‏ ‎языка ‎SQL,‏ ‎при ‎работе ‎с ‎многомерными ‎базами‏ ‎данных ‎мы‏ ‎строим‏ ‎динамически ‎не ‎весь‏ ‎запрос ‎целиком,‏ ‎а ‎отдельные ‎его ‎части:‏ ‎член‏ ‎размерности, ‎перечисление,‏ ‎кортеж ‎или‏ ‎скалярное ‎значение.

Для ‎использования ‎динамической ‎адресации‏ ‎члена‏ ‎размерности ‎используйте‏ ‎функцию ‎StrToMember:

Синтаксически‏ ‎корректное ‎перечисление ‎можно ‎сконструировать ‎функцией‏ ‎StrToSet:

StrToTuple поможет‏ ‎собрать‏ ‎кортеж ‎из‏ ‎координат ‎или‏ ‎из ‎их‏ ‎частей:

А‏ ‎StrToValue позволяет ‎интерпретировать‏ ‎выражение ‎как ‎ячейку:

Подобные ‎динамические ‎конструкции‏ ‎могут ‎пригодиться‏ ‎вам‏ ‎при ‎параметризации ‎MDX-запросов‏ ‎или ‎при‏ ‎индивидуальной ‎нарезке ‎куба ‎с‏ ‎привязкой‏ ‎к ‎текущему‏ ‎пользователю.

Предыдущий Следующий
Все посты проекта
0 комментариев

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048