MDX:如何选择所有层次结构级别

时间:2016-11-11 10:39:09

标签: mdx pentaho

我有以下简单的多维数据集:

enter image description here

我有3个轴,我想在JasperSoft OLAP查看器中显示它们。 我需要在ROWS中指定MDX命令:产品属性,在COLUMNS中指定时间属性。

我正在尝试这个:

SELECT {([Product].[HierarchyProduct].[Name] , [Product].[HierarchyProduct].[Line])}  ON ROWS,
{([Client].[HierarchyClient].[Ville] , [Time].[HierarchyClient].[Pays])} ON COLUMNS
FROM Cube

但我有一个错误:不知道" [产品]。[HierarchyProduct]。[名称] "

那我怎么可以访问它?

1 个答案:

答案 0 :(得分:0)

在Mondrian层次结构中,名称必须与维名称相同的方括号中指定:[Dimension.Hierarchy].[Level] 但是,可以省略层次结构名称(至少在维度中只有一个层次结构时):只使用[Dimension].[Level]

和AFAIK,你不能在元组定义中混合相同维度的成员,就像你尝试过Line和Name一样。实际上,你并不需要:较低级别的成员姓名总是包括他们父母的姓名。但是,您的可视化工具可能隐藏了上层名称(抱歉,我不知道Jasper是否这样做)。在这种情况下,您可能需要将上级名称添加为计算成员。

我建议尝试以下内容(我无法理解您对COLUMNS的要求,因此我已将[时间]。[月]添加到客户信息中):

SELECT 
    [Product.HierarchyProduct].[Line].AllMembers ON ROWS
    , NonEmptyCrossJoin(
        [Client.HierarchyClient].[Pays].AllMembers
        , [Time.HierarchyTime].[Month].AllMembers
    ) ON COLUMNS
FROM [Cube]

顺便说一句,你的水平在我看来就像是颠倒了:最详细的水平位于层次结构的顶层。这是真的有意吗?