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

如何在mdx ssas查询中按首字母分组,ssas,grouping,mdx,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].[C

我的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]) 
我的桌子:

我想根据暴力来分组,键入第一个字母

我期望的产出是:

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')

谢谢。

首先,您需要对多维数据集设计进行一些小的更改,以使解决方案达到最佳效果。在DSV中,添加一个命名列并将其命名为
[新违规类型]
。该领域的逻辑很简单-

=左([违反类型],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])     

这是真的立方体吗?有趣的措施!违规类型是属性层次结构吗?违规类型是属性层次结构还是度量。。。这是回答问题的重要信息。你也可以粘贴在创建截图的mdx脚本中。违规类型是一个属性层次结构,我编辑了我的问题并放置了创建表格的mdx脚本好主意-在没有任何多维数据集更改的情况下编写此脚本会很棘手,可能只是一个缓慢的脚本。嘿,苏拉夫-你喜欢和我一起工作:@whytheq-谢谢你想到我。为什么我们不在这里连接/交谈-linkedin.com/in/sourav-agasti-a961ab7