Ssas 在维度层次结构的不同级别上进行聚合

Ssas 在维度层次结构的不同级别上进行聚合,ssas,mdx,Ssas,Mdx,我有两个维度,比如说日期层次结构和乘积,以及一个具有MAX(Measures.[MAX])聚合的度量 要求在日期层次结构的天或小时级别上有度量值总和。[Max],并在月级别进行汇总 我有以下疑问: With Member Measures.SumOfMax as SUM([Date].[Hierarchy].[Hour].AllMembers, Measures.[Max]) Select NON Empty { Measures.SumOfMax

我有两个维度,比如说日期层次结构和乘积,以及一个具有MAX(Measures.[MAX])聚合的度量

要求在日期层次结构的天或小时级别上有度量值总和。[Max],并在月级别进行汇总

我有以下疑问:

With 
    Member Measures.SumOfMax as SUM([Date].[Hierarchy].[Hour].AllMembers, Measures.[Max])

Select
    NON Empty
    {
        Measures.SumOfMax
    } ON COLUMNS,
    NON EMPTY
    {
        [Date].[Hierarchy].[Month].AllMembers *
        [Product].[Product Name].[Product Name].Allmembers      
    } Having Measures.[Max] > 0 
    ON ROWS
FROM [Cube]

上面的查询运行非常慢。有没有办法对此进行优化?

此查询的问题是,计算出的度量值
度量轴上的每个单元格的最大值SumOfMax
,尽管每次都产生相同的值。SSAS引擎不够智能,无法理解这一点,但因为您了解这种行为,所以可以利用FE缓存,使其只计算一次,并缓存在FE缓存中


希望这能有所帮助。

您需要在求和计算中设置此值吗
[Date].[Hierarchy].[Hour]。所有成员
?是的,因为我需要指定日期层次结构中必须聚合的级别,无论是在小时,但是这个集合就是一切,所以我看不出它的用途-如果省略它,并且度量值表示为
SUM(Measures.[Max])
,你会得到不同的结果吗?是的。它仍将聚合为每小时的最大值(度量值[MAX])。它应该是总和(度量值。[Max])
With 
    Member Measures.[_SumOfMax] as SUM([Date].[Hierarchy].[Hour].AllMembers, Measures.[Max])
    Member Measures.[SumOfMax] as ([Date].[Hierarchy].[Hour].[All], Measures.[_SumOfMax])
Select
    NON Empty
    {
        Measures.SumOfMax
    } ON COLUMNS,
    NON EMPTY
    {
        [Date].[Hierarchy].[Month].AllMembers *
        [Product].[Product Name].[Product Name].Allmembers      
    } Having Measures.[Max] > 0 
    ON ROWS
FROM [Cube]