我的多维数据集中的相关结构是我有一个带有“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让我疯了!
答案 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子句中的'}'。