我有一个具有月度层次结构的日期维度
Year -> Quarter -> Month -> Day -> Hour
我有两个措施。 Measure_A(聚合最大),Measure_B(聚合为SUM)
我需要在24天内将测量_A乘以24并且#34;等级然后我需要每半年一次它。
是否可以通过使用MDX查询来创建新的层次结构?以下是我想要实现的输出
Year | CY H1 | Measure_C | Measure_B
其中:Measure_C
是1月1日至6月30日(Measure_A * 24)的总和,CY H1
将是新等级。
我对Measure_B没有任何问题,因为它的聚合是SUM。仅使用Measure_A,因为聚合是最大的。
这可以在不改变立方体的情况下实现,只需要做一个MDX吗?感谢。
Updated:
这是我目前的查询和输出,
查询:
With
MEMBER [Measures].[Measure_C] AS
SUM ( Descendants ( [Date].[Date Calendar], [Date].[Date Calendar].[Day]), [Measures].[Measure_A] * 24 )
, Format_String = "#,##0"
Select
{
[Measures].[Measure_C]
} ON Columns,
NON Empty
{
[Date].[Date Calendar].[Quarter].ALLMEMBERS
} ON Rows
From [Cube]
输出:
+------+---------+-----------+
| Year | Quarter | Measure_C |
+------+---------+-----------+
| 2011 | Q1 | 12 |
| 2011 | Q2 | 45 |
| 2011 | Q3 | 12 |
| 2011 | Q4 | 25 |
+------+---------+-----------+
我想做的是合并Q1和Q2以获得上半年的日历学期(CY H1)
必需的输出:
+------+---------+-----------+
| Year | Half Yr | Measure_C |
+------+---------+-----------+
| 2011 | CY H1 | 57 |
| 2011 | CY H2 | 37 |
+------+---------+-----------+
请注意,CY H1
我们没有自然的层次结构。但根据下面的评论,单独使用mdx是不可能的。
顺便说一句,我这样做是为了报告服务,所以我想我会在表示层中做一些魔术,因为单独使用MDX查询无法实现这一点。 :)
答案 0 :(得分:1)
假设您的2011年名为[Date].[Date Calendar].[2011]
,那么您可以将计算成员添加为其子项,如下所示:
With
MEMBER [Measures].[Measure_C] AS
Aggregate ( Descendants ( [Date].[Date Calendar], [Date].[Date Calendar].[Day]),
[Measures].[Measure_A] * 24
)
, Format_String = "#,##0"
MEMBER [Date].[Date Calendar].[2011].[CY H1] AS
Aggregate({ [Date].[Date Calendar].[Q1], [Date].[Date Calendar].[Q2] })
MEMBER [Date].[Date Calendar].[2011].[CY H2] AS
Aggregate({ [Date].[Date Calendar].[Q3], [Date].[Date Calendar].[Q4] })
Select
{
[Measures].[Measure_C]
} ON Columns,
NON Empty
{
[Date].[Date Calendar].[2011].[CY H1],
[Date].[Date Calendar].[2011].[CY H2]
} ON Rows
From [Cube]
答案 1 :(得分:0)
您可以尝试定义类似
的内容With Member [Measures].[Measure C] as Sum( [Date].[2014].[1].[1].[1] : [Date].[2014].[2].[6].[30] ), [Measures].[Measure A] ) * 24
或者,您可以以更灵活的方式定义它,例如
会员[措施]。[措施C pre]为Sum(后代([Date] .CurrentMember,[Date]。[Day]),[Measures]。[Measure A]),
是每天最大值的总和,但这仅适用于维度中存在的日期成员(非计算成员)。然后,您需要使用在Rows子句中使用的相同月份或季度来显式计算聚合。