Ssas MDX:聚合[日期].[日历].[季度]级别以创建新的[日期].[日历].[半年]级别
我有一个具有月层次结构的日期维度Ssas MDX:聚合[日期].[日历].[季度]级别以创建新的[日期].[日历].[半年]级别,ssas,mdx,Ssas,Mdx,我有一个具有月层次结构的日期维度 Year -> Quarter -> Month -> Day -> Hour 我有两个衡量标准。度量值A(聚合为最大值),度量值B(聚合为总和) 我需要在“天”级别将度量值A乘以24,然后每半年求和一次 仅使用MDX查询就可以创建新的层次结构吗?下面是我试图实现的输出 Year | CY H1 | Measure_C | Measure_B 其中:Measure_C是从1月1日到6月30日(Measure_A*24)的总和,CY H
Year -> Quarter -> Month -> Day -> Hour
我有两个衡量标准。度量值A(聚合为最大值),度量值B(聚合为总和)
我需要在“天”级别将度量值A乘以24,然后每半年求和一次
仅使用MDX查询就可以创建新的层次结构吗?下面是我试图实现的输出
Year | CY H1 | Measure_C | Measure_B
其中:Measure_C
是从1月1日到6月30日(Measure_A*24)的总和,CY H1
将是新级别
我对度量值_B没有任何问题,因为它的聚合是SUM。仅使用度量值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 |
+------+---------+-----------+
我想做的是合并第一季度和第二季度,得到上半年的日历学期(CYH1)
所需输出:
+------+---------+-----------+
| Year | Half Yr | Measure_C |
+------+---------+-----------+
| 2011 | CY H1 | 57 |
| 2011 | CY H2 | 37 |
+------+---------+-----------+
请注意,CY H1
没有自然的层次结构。但是根据下面的评论,单独使用mdx是不可能的
顺便说一句,我这样做是为了reporting services,所以我想我会在表示层发挥神奇的作用,因为仅使用MDX查询无法实现这一点。:) 您可以尝试定义如下内容
With Member [Measures].[Measure C] as Sum( [Date].[2014].[1].[1].[1] : [Date].[2014].[2].[6].[30] ), [Measures].[Measure A] ) * 24
或者,您可以以更灵活的方式定义它,例如
成员[Measures].[Measures C pre]作为和(子代([Date].CurrentMember,[Date].[Day]),[Measures].[Measures A])
它是每天的最大值之和,但仅对维度中存在的日期成员(非计算成员)有效。然后,您需要使用您在Rows子句中使用的同一组月或季度显式计算聚合。假设您的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]
我不知道你所说的
Year | CY H1 | Measure|u C | Measure|u B
是什么意思。这就是e。G列标题?这不可能在MDX中。在列标题的同一级别上只能有相同层次结构的成员。是的,关于列标题,你是对的,我只是想,是否可以在mdx中这样做。谢谢你的评论:)很抱歉回复晚了,我刚度假回来。您的解决方案实际上适用于将SUM作为其聚合的其他度量值,但这不适用于聚合为MAX的度量值。\u A。无论如何,感谢您的回答,我也可以将此解决方案用于我正在处理的一些模板。:)@ggarcia当您在问题中使用SUM
时,我假设您的所有度量值都是可求和的。如果有些不是,您可以使用聚合
而不是求和
。这将使用为每个度量值配置的聚合。我只是编辑了我的答案来解决这个问题。