Как в MDX-запросе свернуть список в строку с разделителями
Самородов Федор Анатольевич: Как в MDX-запросе свернуть список в строку с разделителями
Итак, при помощи MDX-запроса мы сформировали желаемый список. Но что если приложению непременно требуется этот список в виде строки с разделителями? Например, в отчёте требуется отобразить найденные элементы через запятую. Или такой формат необходим для передачи результата в какую-то другую систему для дальнейшей обработки.
Как из элементов списка (столбца, набора) собрать длинную строку с разделителями?
Обычно в такие моменты сразу вспоминается функция StrToSet, придуманная специально для этого. Она принимает на вход множество, а возвращает строку, в которой элементы перечислены через запятую.
Однако, не торопитесь задействовать StrToSet! Работая с этой функцией, вам каждый раз придётся решать четыре сопутствующих проблемы:
- StrToSet заключает результирующую строку в фигурные скобки, которые нам скорее всего не нужны. Надо не забыть от них избавиться.
- Вы скорее всего хотели получить список из названий или значений элеметов множества. А StrToSet сконвертирует в строку не названия, а ключи. Придётся подумать, как заменить их на требуемые имена.
- Разделитель строки, возвращаемой StrToSet — всегда запятая. Если нужно что-то другое, потребуется дополнительная обработка.
- И, конечно, надо будет избавиться от обрамления в виде префиксов и квадратных скобок.
Есть другой способ решения этой задачи. Гораздо более удобный и управляемый. Один из режимов работы функции Generate как раз предназначен для формирования длинной строки с разделителями. При этом вы сами выбираете и значения и разделители.
Вот так:
Функция CurrentMember в этом контексте работает так же, как и всегда. Только она отслеживает корреляцию с перебираемыми элементами не по оси, а внутри множества. И, кстати, синтаксически здесь разрешено вызывать CurrentMember не для иерархии, а сразу для перебираемого набора.
Вот ещё пара примеров.
Давайте составим список не из названий, а из произвольных свойств:
И, разумеется, перебираемое множество можно собрать произвольным образом:
Подробнее об этом Вы сможете узнать на курсе : М50578A: Язык запросов MDX для аналитических служб SQL Server (OLAP)
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?