[英]How filter only the children members in MDX?
當我運行此mdx查詢時,工作正常(從層次結構級別獲取子級成員):
select {} on columns,
[Dimension].[hierarchy].[level].children on rows
from [Cube]
但是,當我在行上添加一些元組時,不進行篩選過濾子成員(顯示所有成員):S
select {} on columns,
[Dimension].[hierarchy].[level].children
* [Dimension2].[hierarchy2].[level2].allmembers on rows
from [Cube]
*
是交叉[Dimension2].[hierarchy2].[level2].allmembers
由於它們是不同的維,因此您將獲得[Dimension].[hierarchy].[level].children
和[Dimension2].[hierarchy2].[level2].allmembers
。
如果它們是來自同一維度的兩個層次結構,則自動存在行為將限制結果,例如,Year2014與月相交應僅顯示2014年中的月份。
嘗試使用DESCENDANTS
函數+您可能不需要NULL,因此請嘗試NON EMPTY
SELECT
{} ON COLUMNS,
NON EMPTY
DESCENDANTS(
[Dimension].[hierarchy].[level].[PickAHigherUpMember],
[Dimension].[hierarchy].[PickTheLevelYouWantToDrillTo]
)
*
[Dimension2].[hierarchy2].[level2].allmembers ON ROWS
FROM [Cube]
如果查看兒童的mdx語言參考,您還將找到另一個示例,該示例說明如何將函數與層次結構一起使用,而不是member_expression。
http://msdn.microsoft.com/en-us/library/ms146018.aspx
但它不適用於層次結構級別。
也許行表達式最初只是一個已經更改為級別表達式的層次結構。
在下面的類似的工作mdx中,行上具有層次結構:
select {} on 0,
[Product].[Model Name].children
*
[Geography].[Country].[All Geographies]
on 1
FROM [Adventure Works
菲利普,
我猜您只想要那些子級具有默認度量值的行。 在這種情況下,您可以嘗試以下操作:
select {} on columns,
Nonempty([Dimension].[hierarchy].[level].children
* [Dimension2].[hierarchy2].[level2].allmembers) on rows
from [Cube]
現在,如果對於孩子來說,您需要Dimension2中的所有成員,則可以嘗試:
select {} on columns,
Nonempty([Dimension].[hierarchy].[level].children, [Dimension2].[hierarchy2].[level2].allmembers)
* [Dimension2].[hierarchy2].[level2].allmembers) on rows
from [Cube]
在第二種情況下,Nonempty函數采用第二個參數,並通過Nonempty函數的結果進行交叉聯接。 有關Nonempty的文檔(包括第二個參數的用法),請參見https://docs.microsoft.com/zh-cn/sql/mdx/nonempty-mdx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.