如何在mdx ssas查询中按首字母分组

时间:2016-09-06 03:34:53

标签: ssas grouping mdx

我的MDX脚本:

 SELECT NON EMPTY { [Measures].[Fact Emp Violation Count] } ON COLUMNS, NON EMPTY { ([Dim Date].[Calendar].[Year].ALLMEMBERS * [Dim Warning Level].[Violance Hierarchies].[Violance Type].ALLMEMBERS ) }  ON ROWS FROM ( SELECT ( { [Dim Date].[Calendar].[Year].&[2015] } ) ON COLUMNS FROM [Violation]) 

我的桌子:

enter image description here

我想根据暴力类型的第一个字母进行分组

我想要的输出是:

Year     | Violence Type | Fact Emp Violation Count

CY 2015  |       1       | 19 + 18 + 2 + 23 + (violence type begins with '1')

CY 2015  |       2       | 11 + 4 + 1 + (violence type begins with '2')

感谢。

1 个答案:

答案 0 :(得分:3)

首先,您需要进行小型立方体设计更改,以使解决方案达到最佳状态。在DSV中,添加一个命名列并将其命名为[New Violance Type]。该领域的逻辑很简单 -

=left([Violance Type], 1)

我手头计算并将其存储在多维数据集中会对您的MDX查询响应时间产生奇迹。虽然它也可以作为MDX的一部分进行计算,但它会降低性能。

将此字段添加到与新属性层次结构相同的维度 - [dim warning level].[New Violance Type]

然后你可以使用下面的MDX -

select non empty { [measures].[fact emp violation count] } on columns, 
non empty { ([dim date].[calendar].[year].allmembers * [dim warning level].[New Violance Type].allmembers ) }  on rows 
from ( select ( { [dim date].[calendar].[year].&[2015] } ) on columns from [violation])