Как написать динамический MDX-запрос
Есть два популярных сценария использования динамических MDX-запросов: сложная параметризация и контекстно-зависимые запросы. Да, бывает, что без динамических MDX-запросов не обойтись. На этот случай имеются четыре инструмента — они предназначены как раз для конструирования запросов «на лету».
Все умеют писать динамические SQL-запросы. Составляем строку и передаём её команде EXECUTE или процедуре sp_ExecuteSQL:
Многие также в курсе, чем эти два способа различаются. А что насчёт динамических MDX-запросов?
Ведь в языке MDX синтаксические ограничения заметно более суровы, чем в SQL, и без динамического формирования MDX-выражений бывает тяжело.
Для работы с динамическими запросами в MDX имеется набор функций, названия которых начинаются с «StrTo»:
- StrToMember
- StrToSet
- StrToTuple
- StrToValue
В отличие от языка SQL, при работе с многомерными базами данных мы строим динамически не весь запрос целиком, а отдельные его части: член размерности, перечисление, кортеж или скалярное значение.
Для использования динамической адресации члена размерности используйте функцию StrToMember:
Синтаксически корректное перечисление можно сконструировать функцией StrToSet:
StrToTuple поможет собрать кортеж из координат или из их частей:
А StrToValue позволяет интерпретировать выражение как ячейку:
Подобные динамические конструкции могут пригодиться вам при параметризации MDX-запросов или при индивидуальной нарезке куба с привязкой к текущему пользователю.
0 комментариев