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

MDX: How to select all Hierarchy levels

我有以下简单的立方体:

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

我正在尝试这个:

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

但我有一个错误,不知道“[Product].[HierarchyProduct].[Name]

那我怎么访问它呢??

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

据我所知,您不能在元组定义中混合使用相同维度的成员,就像您尝试使用 Line 和 Name 一样。实际上,您不必这样做:较低级别成员的名称始终包含他们的名称 parents。但是,您的可视化工具可能会隐藏上层名称(抱歉,我不知道 Jasper 是否这样做)。在这种情况下,您可能需要将上层名称添加为计算成员。

我建议尝试如下操作(我无法真正理解您对 COLUMNS 的要求,因此我在客户信息中添加了 [Time].[Month]):

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

顺便说一句,在我看来,您的级别好像是颠倒的:最详细的级别位于层次结构的顶部。真的是故意的吗?