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

Корзина

Корзина

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Как в MDX-запросе свернуть список в строку с разделителями

Самородов Федор Анатольевич: Как в MDX-запросе свернуть список в строку с разделителями

СФА

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

Как из элементов списка (столбца, набора) собрать длинную строку с разделителями?

Как в MDX-запросе свернуть список в строку с разделителями

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

Однако, не торопитесь задействовать StrToSet! Работая с этой функцией, вам каждый раз придётся решать четыре сопутствующих проблемы:

  1. StrToSet заключает результирующую строку в фигурные скобки, которые нам скорее всего не нужны. Надо не забыть от них избавиться.
  2. Вы скорее всего хотели получить список из названий или значений элеметов множества. А StrToSet сконвертирует в строку не названия, а ключи. Придётся подумать, как заменить их на требуемые имена.
  3. Разделитель строки, возвращаемой StrToSet — всегда запятая. Если нужно что-то другое, потребуется дополнительная обработка.
  4. И, конечно, надо будет избавиться от обрамления в виде префиксов и квадратных скобок.

Как в MDX-запросе свернуть список в строку с разделителями

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

Вот так:

Как в MDX-запросе свернуть список в строку с разделителями

Функция CurrentMember в этом контексте работает так же, как и всегда. Только она отслеживает корреляцию с перебираемыми элементами не по оси, а внутри множества. И, кстати, синтаксически здесь разрешено вызывать CurrentMember не для иерархии, а сразу для перебираемого набора.

Как в MDX-запросе свернуть список в строку с разделителями

Вот ещё пара примеров.

Давайте составим список не из названий, а из произвольных свойств:

Как в MDX-запросе свернуть список в строку с разделителями

И, разумеется, перебираемое множество можно собрать произвольным образом:

Как в MDX-запросе свернуть список в строку с разделителями

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

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку

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