Ssas 如何仅筛选MDX中的子成员?

Ssas 如何仅筛选MDX中的子成员?,ssas,mdx,business-intelligence,olap,Ssas,Mdx,Business Intelligence,Olap,运行此mdx查询时,工作正常(从层次结构级别获取子成员): 但是,当我在行上添加一些元组时,不会过滤子成员(显示所有成员):S *是一个交叉连接-您将得到[Dimension].[hierarchy].[level]的笛卡尔积。子对象和[Dimension2].[hierarchy2].[level2]。所有成员,因为它们是不同的维度 如果它们是来自同一维度的两个层次结构,则自动存在行为将限制结果,例如,2014年与月份的交叉应仅显示2014年的月份 尝试使用子体函数+您可能不需要空值,因此请尝

运行此mdx查询时,工作正常(从层次结构级别获取子成员):

但是,当我在行上添加一些元组时,不会过滤子成员(显示所有成员):S


*
是一个交叉连接-您将得到
[Dimension].[hierarchy].[level]的笛卡尔积。子对象
[Dimension2].[hierarchy2].[level2]。所有成员
,因为它们是不同的维度

如果它们是来自同一维度的两个层次结构,则自动存在行为将限制结果,例如,2014年与月份的交叉应仅显示2014年的月份

尝试使用
子体
函数+您可能不需要空值,因此请尝试
非空

SELECT
  {} ON COLUMNS,
  NON EMPTY
  DESCENDANTS(
    [Dimension].[hierarchy].[level].[PickAHigherUpMember],
    [Dimension].[hierarchy].[PickTheLevelYouWantToDrillTo]
    ) 
  * 
  [Dimension2].[hierarchy2].[level2].allmembers ON ROWS
FROM [Cube]

如果您查看儿童的mdx语言参考,您还会发现另一个示例,说明如何使用具有层次结构的函数而不是成员表达式

但它在层次结构级别上不起作用

也许行表达式最初是一个层次结构,您已经将其更改为级别表达式

在以下示例中,将创建一个具有行层次结构的类似工作mdx:

select {} on 0,
[Product].[Model Name].children
*
[Geography].[Country].[All Geographies]
 on 1
FROM [Adventure Works

Philip,

我猜您只想要那些子元素在默认度量值上有值的行。在这种情况下,您可以尝试以下方法:

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]

在第二种情况下,非空函数接受第二个参数,并使用非空函数的结果进行交叉连接。有关非空的文档,包括第二个参数的用法,请参见Hi whytheq!谢谢回复!我使用后代函数得到了相同的行为,我得到了两个维度之间的笛卡尔积:S.PD:如果我使用非空子句,我得到“0行”(无结果)尝试向列上的
{}添加一个度量,我添加了一个度量,得到了相同的结果(两个维度之间的笛卡尔积)好的-我想我遗漏了您实际需要的内容-如果您现在对列进行了度量,那么您应该只得到实际存在的元组(Dim,Dim2)的结果!!或者你的立方体只是在编数字?对不起,为什么我没有解释清楚。。我需要一个mdx查询,它返回来自2维(或更多维)的属性,只过滤层次结构中的子成员。问题是当我组合成员(使用交叉连接)时,“子项筛选”不起作用,因为交叉连接“破坏”了它…我不理解您的第一个脚本-这不是有效的构造
[Dimension].[hierarchy].[level]。子项
,因为函数
子项
无法应用于[level]-它只能应用于[成员]。。。。在你的第一个剧本中,它肯定是一个级别吗?
select {} on columns,
Nonempty([Dimension].[hierarchy].[level].children 
* [Dimension2].[hierarchy2].[level2].allmembers) on rows
from [Cube]
select {} on columns,
Nonempty([Dimension].[hierarchy].[level].children, [Dimension2].[hierarchy2].[level2].allmembers)
* [Dimension2].[hierarchy2].[level2].allmembers) on rows
from [Cube]