MDX: агрегировать последний член

У меня есть куб данных с одним иерархическим измерением «MyTime», на каждом уровне элементы упорядочены. Это измерение каким-то образом является измерением времени, но не соответствует на 100% григорианскому календарю. Существует один куб, использующий это измерение. Выдержка из моей OLAP-схемы:

<Dimension name="MyTime">
    <Hierarchy hasAll="true">
        <Level name="MyYear" type="Numeric" uniqueMembers="true"/>
        <Level name="MyMonth" type="Numeric" uniqueMembers="true"/>
        <Level name="MyDay" type="Numeric" uniqueMembers="true"/>
        <Level name="MyShift" type="Numeric" uniqueMembers="true"/>
    </Hierarchy>
</Dimension>
<Cube name="MyCube">
    <DimensionUsage name="MyTime" source="MyTime"/>
    <Measure name"Price" aggregator="avg"/>
</Cube>

DB-таблицы выглядят следующим образом:

MyTimeDim
id | myYear | myMonth | myDay | myShift | ... other fields
---+--------+---------+-------+---------+-----------------
1  | 2014   | 6       | 3     | 1       |
2  | 2014   | 6       | 3     | 2       |
3  | 2014   | 6       | 3     | 3       |
4  | 2014   | 6       | 4     | 1       |
5  | 2014   | 6       | 4     | 2       |
6  | 2014   | 6       | 4     | 3       |

MyFact
id | timeDim | price
---+---------+------
1  | 1       | 20
2  | 2       | 9
3  | 3       | 25
4  | 4       | 3
5  | 5       | 37
6  | 6       | 5

Задача состоит в том, чтобы показать иерархическую оценку для детализации по MyTime. На каждом уровне должны строиться разные агрегаты цены. Легкие - это мин и макс. Но я также должен показать первого и последнего члена.

Это означает, что на уровне дня результат должен выглядеть так:

Date       | Min | Max | First | Last
-----------+-----+-----+-------+-----
2014-06-03 | 9   | 25  | 20    | 25
2014-06-04 | 20  | 37  | 3     | 5

Я думаю, чтобы обеспечить это, я должен определить вычисляемый член. Но я не мог понять, как настроить "пользовательский" агрегат.


person tomkani    schedule 04.06.2014    source источник


Ответы (1)


На данный момент в Мондриане нет первого или последнего агрегата.

Единственный способ сделать это, IMO, - это время запроса с таким вычисляемым членом:

  MEMBER [Measures].[Last Period Measure] as ( [Measures].[My Measures], [MyTime].CurrentMember.LastChild)
person nsousa    schedule 04.06.2014