MDXQuery - 与他父母的当前成员

时间:2016-05-14 20:39:44

标签: mdx parent cube

我正在尝试编写一个MDX查询,该查询将显示我们所有的产品以及它们所属的子组(层次结构父级)。虽然这项任务似乎相当微不足道,但我还是无法弄明白。这是我的MDX查询。

select 
    {
    [Products].[Hierarchy].currentmember.parent
    }
on 0,
    {
    [Products].[Hierarchy].[Product].members
    }
on 1
from [CUBE]

我也试过

    select 
    {
Ancestor([Products].[Hierarchy].currentmember, 
         [Products].[Hierarchy].[Subgroup]) 
    }
on 0,
    {
    [Products].[Hierarchy].[Product].members
    }
on 1
from [CUBE];

但我得到的只是一个灰色的产品列表,没有任何实际的列。任何帮助/提示将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您想使用相同的层次结构,那么您只能在一个轴上使用它 - 上下文中有3个轴 - ON COLUMNS / ON ROWS / WHERE

因此,[Products].[Hierarchy]. ON COLUMNSON ROWS会引发异常。

您可以做的是将一些逻辑移到WITH子句中,并将叙述移到Measures维度:

WITH 
MEMBER [Measures].[ProdName] AS
  Ancestor(
    [Products].[Hierarchy].currentmember, 
    [Products].[Hierarchy].[Subgroup]
  ).MEMBER_CAPTION
SELECT 
  [Measures].[ProdName] ON 0,
  [Products].[Hierarchy].[Product].MEMBERS ON 1
FROM [CUBE];

您可以使用属性层次结构并执行以下操作:

SELECT 
  {} ON 0,
  [Products].[Product].[Product]
 *[Products].[Subgroup].[Subgroup]
    ON 1
FROM [CUBE];