我是mdx的新手,现在已经尝试解决以下问题大约一天了。任何帮助将不胜感激:
我的查询:
select {[Measures].[Kunden]} ON COLUMNS,
NON EMPTY Hierarchize(Union({CurrentDateMember([dimZeit], "[\di\mZeit]
\.[yyyy]"), CurrentDateMember([dimZeit], "[\di\mZeit]\.[yyyy]").Children},
CurrentDateMember([dimZeit], "[\di\mZeit]\.[yyyy]\.[q]").Children))) ON ROWS
FROM Center
,如预期的那样给出以下结果:
Zeit Kunden
2010 1561
- Q1 523
- Q2 470
- Q3 256
- Q4 312
- Nov. 312
现在,我想要实现的是将列'Kunden'分成列'Kunden< 5分钟'和'Kunden> 5分钟'表示等待时间少于或超过5分钟的客户。
我能得到的最接近的是:
WITH
MEMBER [Measures].[LT5] AS
Aggregate(
Filter([Measures].[Kunden], [Measures].[Wartezeit] < 3000))
select {[Measures].[LT5]} ON COLUMNS,
NON EMPTY Hierarchize(Union({CurrentDateMember([dimZeit], "[\di\mZeit]\.[yyyy]"),
CurrentDateMember([dimZeit], "[\di\mZeit]\.[yyyy]").Children},
CurrentDateMember([dimZeit], "[\di\mZeit]\.[yyyy]\.[q]").Children)) ON ROWS
FROM Center
结果是:
Zeit Kunden
2010 -
- Q1 75
- Q2 23
- Q3 86
- Q4 71
- Nov. 71
我理解这是因为2010年全年的汇总[测量]。[Wartezeit]超过3000秒。但是我希望看到等待时间低于3000秒的客户数量,所以2010年应该是75 + 23 + 86 + 71 = 255。
答案 0 :(得分:2)
通过在wartezeit列上创建一个退化维度解决它,在mondrian中看起来像这样:
<Dimension name="dauer">
<Hierarchy hasAll="true">
<Level name="dauer" column="dauer" uniqueMembers="true">
<KeyExpression>
<SQL dialect="generic">
<![CDATA[(case when dauer < 300 then 'LT5'
when dauer < 600 then 'LT10'
else 'GT60'
end)]]></SQL>
</KeyExpression>
</Level>
</Hierarchy>
</Dimension>
我的查询的select子句现在是一个简单的交叉连接:
({[Measures].[Kunden]} * {[dauer].[LT5], [dauer].[LT10], [dauer].[GT60]})