包含来自同一层次结构的2个维度的MDX查询

时间:2009-12-07 16:10:23

标签: mdx adomd.net

我的多维数据集中的相关结构是我有一个带有“Class”和“SubClass”的层次结构。我还有一个称为“价值”的措施,这是我试图获得的。

简单查询可能如下所示:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY ([Some Dimension].[Class Hierarchy].[Class]) ON ROWS
FROM [MyCube]

我显然可以使用返回给Adomd的HIerarchy读取SubClass。

我的问题是双重的,首先我将如何“扁平化”这个层次结构,以便在CellSet中接收Class和SubClass作为离散成员?这不起作用:

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   [Some Dimension].[Class Hierarchy].[Class], 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]
  

Class Hierarchy层次结构在Crossjoin函数

中被多次使用

第二个问题,我真正需要做的是在特定类上过滤上述内容,再次由于与上述相同的原因,这不会起作用。

SELECT
 NON EMPTY ([Measures].[Value]) ON COLUMNS,
 NON EMPTY (
   {[Some Dimension].[Class Hierarchy].[Class].&[ClassA],[Some Dimension].[Class Hierarchy].[Class].&[ClassB]}, 
   [Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]

任何帮助非常感谢。 MDX让我疯了!

3 个答案:

答案 0 :(得分:4)

您缺少维度上的MEMBERS属性。

第一个例子试试这个:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS,
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].MEMBERS,
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]

对于你的第二个例子,试试这个:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS, 
    NON EMPTY {(
            [Some Dimension].[Class Hierarchy].[Class].&[ClassA],
            [Some Dimension].[Class Hierarchy].[Class].&[ClassB],
            [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]

答案 1 :(得分:2)

在WHERE子句中使用子查询。 MDX将始终限制在一个轴上使用一个维度。

Sub Query是一种解决这个问题的方法。我最近在MDX驱使我疯了之后才学会了这个技巧。

答案 2 :(得分:0)

这个查询对我有用。

 SELECT NON EMPTY { [Measures].[App Count] }
 ON COLUMNS, 
 NON EMPTY 
 {(
 EXISTING 
 (
 [MART TIME DIM].[Date].[Date] .MEMBERS) * 
 [New Ren DIM].[New Ren CODE].[New Ren CODE].ALLMEMBERS
 )}
 ON ROWS FROM [SubmissionCube]  
 where
({
[MART BROKER DIM].[BROKER ID].&[10812]},{[MART TIME DIM].[Year].&[2015],
{[MARTTIME DIM].[Year].&[2016]}
})  

请小心查询where子句中的'}'。