MDX:聚合最后一个成员

时间:2014-06-04 06:47:46

标签: mdx olap mondrian

我有一个带有一个分层维度的数据立方体" 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-Tables看起来像这样:

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

我认为,要提供这个,我必须定义一个计算成员。但我无法弄清楚,如何设置&#34;用户定义&#34;聚合

1 个答案:

答案 0 :(得分:1)

截至目前,蒙德里安没有第一次或最后一次聚合。

执行此操作的唯一方法是IMO,其查询时间为计算成员,如下所示:

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