Mdx 是否可以在层次维度中折叠不同分支的多个类似节点?

Mdx 是否可以在层次维度中折叠不同分支的多个类似节点?,mdx,hierarchy,dimension,Mdx,Hierarchy,Dimension,假设我使用以下层次结构作为维度: 根 A1 B11 B12 B1N B1Special A2 B21 B22 B2N B2Special 上午 BM1 BM2 BMN BMSpecial 在每个“B”节点下,还有多个不同级别的节点。层次结构的每个叶都有一个相关的度量(某些事实F的总和)。 使用MDX是否可以在根级别仅查看一次所有“特殊”节点的和,并且仅查看“特殊”节点的子项。换句话说,您只希望在结果集中看到一个数字 假设您原始问题中详细描述的层次结构称为“Bob”,您

假设我使用以下层次结构作为维度:
    • A1
      • B11
      • B12
      • B1N
      • B1Special
    • A2
      • B21
      • B22
      • B2N
      • B2Special
    • 上午
      • BM1
      • BM2
      • BMN
      • BMSpecial
在每个“B”节点下,还有多个不同级别的节点。层次结构的每个叶都有一个相关的度量(某些事实F的总和)。
使用MDX是否可以在根级别仅查看一次所有“特殊”节点的和,并且仅查看“特殊”节点的子项。换句话说,您只希望在结果集中看到一个数字

假设您原始问题中详细描述的层次结构称为“Bob”,您还有另一个维度称为“Kate”,您可以试试这个

WITH MEMBER [Bob].[Only the special levels] 
AS 'Aggregate(
   Filter(
      {[Bob].[Name of level which holds B members].members},
      InStr(1, [Bob].CurrentMember.Name, "Special") > 0
   )
)'
SELECT {[Kate].defaultMember} ON ROWS, 
{[Measures].[Whever you want to see aggregated]} ON COLUMNS 
FROM [Cube name] 
WHERE ([Bob].[Only the special levels])
这将在Bob维度中创建一个新的临时成员,它是Bob维度中其他几个成员的聚合。我们从坐在一个特定级别的所有成员开始。
过滤器
仅选择名称中有“特殊”一词的成员

请注意,
InStr
是Microsoft SSAS支持的VBA函数。如果未找到所选字符串,则返回零。MDX的其他版本中可能提供其他字符串搜索功能


然后在
WHERE
子句中使用这个新成员,并在任何地方使用其他维度/度量值。

答案可能是肯定的。但我不理解您的要求:您不希望在上面的哪个节点上看到子节点的总和?您希望在那里看到什么值?“所有且仅“特殊”节点的子项的总和”是所有叶节点加上特殊节点的总和,即。E特殊节点在总和中包含两次?假设每个特殊节点只包含属于层次结构叶的子节点。我只需要这些树叶的全部事实。如果我只看到根,我想看到一个数字,它是所有特殊节点的直接子节点的所有事实的总和。若我展开第一级,我想看到每个A节点的事实总和,等等。哎呀,我在你们写评论的时候写了我的答案!