У меня есть куб данных с одним иерархическим измерением «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
Я думаю, чтобы обеспечить это, я должен определить вычисляемый член. Но я не мог понять, как настроить "пользовательский" агрегат.