如何使用MDX获得唯一的测量?

时间:2017-01-06 06:54:11

标签: ssas mdx olap olap-cube

我有一个非常规的多维数据集,其中包含一个名为“RowNumber”的维度和五个称为“Col0”,“Col1”的度量等。多维数据集的每个坐标都加载了字符串值,例如“Value14”或“Value3”。 / p>

在每个小节中都会重复相同的字符串值,所以如果我执行

SELECT [Measures].[Col2] ON 0, [RowNumber].[Row10]:[RowNumber].[Row14] ON 1 FROM [myCube]

我得到了这些结果:

        Col2
Row10   Value5
Row11   Value0
Row12   Value0
Row13   Value19
Row14   Value6

您可以在上表中看到有两个Value0条目。我想要获得的只是来自所有Col2的唯一值,无论RowNumber如何:

Col2 
Value5 
Value0 
Value19 
Value6

我很欣赏这是一个非传统的立方体使用,所以也许这是不可能的。但是,从一个度量中获取唯一值似乎不应该是不可能的,所以我希望有一种方法可以做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:0)

MDX并非真正针对此类事物而设计。但它有可能:

With
Set [OrderedRows] as 
Order(NonEmpty([RowNumber].[Row10]:[RowNumber].[Row14],[Measures].[Col2]),[Measures].[Col2])

Member [Measures].[Rank] as 
Rank([RowNumber].[RowNumber].CurrentMember, [OrderedRows])

Member [Measures].[Col2Unique] as 
IIF(
    ([OrderedRows].Item([Measures].[Rank] - 2),[Measures].[Col2]) = [Measures].[Col2],
    NULL,
    [Measures].[Col2]
)

Select {[Measures].[Col2],[Measures].[Col2Unique]} on 0,
Non Empty [OrderedRows] on 1
From [myCube]