Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas MDX:聚合[日期].[日历].[季度]级别以创建新的[日期].[日历].[半年]级别_Ssas_Mdx - Fatal编程技术网

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
时,我假设您的所有度量值都是可求和的。如果有些不是,您可以使用
聚合
而不是
求和
。这将使用为每个度量值配置的聚合。我只是编辑了我的答案来解决这个问题。