MDX классификация результатов - PullRequest
1 голос
/ 16 ноября 2010

Я новичок в 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

Я понимаю, что причина этого в том, что совокупный показатель [Мера]. [Wartezeit] за весь 2010 год превышает 3000 секунд. Но я бы хотел видеть количество клиентов со временем ожидания ниже 3000 секунд, поэтому в 2010 году оно должно составлять 75 + 23 + 86 + 71 = 255.

1 Ответ

2 голосов
/ 16 ноября 2010

Решил это, создав вырожденное измерение в столбце 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]}) 
...