2014-01-16 76 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

感謝隊友 - 我也編輯了我的問題。猜猜我們都找到了解決辦法。 :) – user3202100

4

您可以使用Descendants method(鏈接描述的第四種形式使用集合作爲其第一個參數。因此,

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

應該提供你想要的。