Получить имена всех в настоящее время доступных членов - PullRequest
1 голос
/ 26 марта 2011

У меня есть Action URL, который откроет веб-сайт из Excel.Мне нужно передать имена всех сотрудников, которые в настоящее время перечислены в Excel на этом веб-сайте.Этот список исходит из куба и может быть отфильтрован пользователем с использованием различных мер.Но в конце концов было бы доступно несколько [Сотрудник]. [Имя].

Так что мой вопрос в том, как я могу сгенерировать строку со всеми именами сотрудников из текущих членов.Ниже MDX, как такой список сотрудников может быть получен из куба:

ВЫБРАТЬ НЕ ПУСТУЮ {[Показатели]. [Зарплата]} НА КОЛОННАХ, НЕТ ПУСТЫХ {[Сотрудник]. [Имя]} НА СТРОКЕ ИЗ [Куб] WHERE ([Сотрудник]. [Отдел]. [X], [Сотрудник]. [Заголовок]. [Z]……) Список измерений в предложении WHERE неизвестен - это будет зависеть от того, какой пользователь будет использовать в Excel

Давайте предположим, что этот MDX вернет 5 имен: ABCDE Что мне нужно получить для каждой строки, так это список всех этих сотрудников, но только тех, которые в данный момент отображаются.Таким образом, в приведенном выше примере результат должен выглядеть следующим образом: AA, B, C, D, E BA, B, C, D, E CA, B, C, D, E DA, B, C, D, E EA, B,C, D, E

Итак, я мог бы передать это в URL на веб-сайт

Я пытался сделать это, используя GENERATE с и без EXISTING, но в результате я либо получил списоквсе сотрудники из куба (в данный момент не выбраны) или только один.

Может кто-нибудь помочь мне с этим?

1 Ответ

1 голос
/ 07 июня 2011

Вам понадобится вычисляемый член, а мы сгенерируем функцию MDX ( doc ).Первой идеей будет:

MEMBER [Measures].[ListAsName] AS Generate( [Employee].[Name].members,  [Employee].[Name].currentmember.name, ", ")

Проблема в том, что [Employee]. [Name] .members не фильтруется предложением where (как в случае с осью).Это связано с тем, что он находится в вычисляемом контексте элемента.

У вас есть два возможных решения:

Использование СУЩЕСТВУЮЩИЙ .Это означает, что мы уверены, что все члены в срезе являются членами измерения [Сотрудник]:

 MEMBER [Measures].[ListAsName] AS Generate( Existing [Employee].[Name].members,  [Employee].[Name].currentmember.name, ", ")

Использовать не пусто :

 MEMBER [Measures].[ListAsName] AS Generate( nonempty([Employee].[Name].members),  [Employee].[Name].currentmember.name, ", ")

использовать оба:-) -> непустое (СУЩЕСТВУЮЩИЙ [Сотрудник]. [Имя] .members)

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

...