簡體   English   中英

如何僅過濾MDX中的子級成員?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM