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

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

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

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

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

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

  • StrToMember
  • StrToSet
  • StrToTuple
  • StrToValue

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

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

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

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

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

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

Бесплатный
Комментарии
avatar
Здесь будут комментарии к публикации