2014-01-16 1 views
2

Функции детей возвращают набор элементов. Но мне нужны дети нескольких членов.MDX Дети нескольких членов

Проблема заключается в том, что я не могу использовать союз, чтобы сделать его работу так:

Union([Geography].[Geography].[USA].children,[Geography].[Geography].[Canada].children) 

Я не знаю, сколько член будет ... Так что я на самом деле нужно было бы все дети набора членов.

нравится:

([Geography].[Geography].[USA],[Geography].[Geography].[Canada],[Geography].[Geography].[GB]).children 

Есть ли функция, как это?


Я не мог ответить на мой вопрос, и поэтому я просто его отредактировал. С помощью ответа DHN и некоторых мозговых работ я нашел решение, которое мог бы использовать:

Except(DRILLDOWNLEVEL({[Geography].[Geography].[USA],[Geography].[Geography].[Canada]},,0), 
{[Geography].[Geography].[USA],[Geography].[Geography].[Canada]}) 

Это работает для меня. Пояснение: Я разворачиваю элементы, которые предоставляет инструмент, который возвращает детей с родителями, а затем я использую идею DHN и, кроме родителей, так немного очищаю список.

Надеюсь, это понятно.

ответ

0

На самом деле, вы можете использовать Crossjoin, чтобы получить нужный вам набор.

Что-то вроде

[Geography].[Geography].[USA] * [Geography].[Geography].[Canada] * [Geography].[Geography].[GB] 

Но это только правильное решение, если у вас есть только несколько различных критериев поиска.

В качестве альтернативы вы можете использовать Except, чтобы удалить те критерии, которые вас не интересуют.

Except([Geography].[Geography].children, [Geography].[Geography].[Germany]) 

Это даст вам все содержание [Geography] размерности, за исключением одного из [Germany].

Надеюсь, это поможет.

Редактировать после комментария ТО

Ок, это не было частью вашего вопроса, но я думаю, что вам нужно, это MemberToStr() функция. Пожалуйста, найдите документ here.

Я думаю, что что-то вроде этого должно сделать трюк.

with member [Measures].[Cities] 
as  membertostr([Geography].[Geography].members.children) 
select [Measures].[Cities] on 0 
from [WhatEverYourCubeNameIs]  
where (
    [Geography].[Geography].[USA], 
    [Geography].[Geography].[Canada] 
) 

Обратите внимание, что этот запрос полностью не проверен. Я также потерял некоторые свои навыки, потому что прошло некоторое время, так как я использовал . Вы также должны будете создать запрос динамически, поскольку выбор, похоже, зависит от пользователя. Но я уверен, что вы это знаете. ;)

+0

Спасибо за быстрый ответ. Но проблема в том, что набор элементов генерируется динамически. Это означает, что кто-то многократно выбирает страны в выпадающем списке. Поэтому, если кто-то выбирает США и Канаду (а дети - города), он должен вернуть набор, подобный «Сиэтл, Лос-Анджелес, Ванкувер, ...» – user3202100

+0

. В следующий раз вы должны быть более ясны с вашим вопросом. Это было не похвально, чего вы пытаетесь достичь. Тем не менее, надеюсь, что это поможет. ;) – DHN

+0

Thanks mate - Я также редактировал мой вопрос. Думаю, мы нашли решение. :) – user3202100

4

Вы можете использовать Descendants method (четвертая форма связанного описания использует набор в качестве первого аргумента.Таким образом,

Descendants({ 
      [Geography].[Geography].[USA], 
      [Geography].[Geography].[Canada], 
      [Geography].[Geography].[GB] 
      }, 
      1, 
      SELF 
      ) 

должен доставлять именно то, что вы хотите.

 Смежные вопросы

  • Нет связанных вопросов^_^