MDX总和上个月

时间:2013-07-02 21:18:11

标签: sql service ssas mdx analysis

我创建了一个包含许多不同聚合的多维数据集,我所做的任何求和都在MDX中。我正在根据以前的图纸模拟彩票行为。这是我目前的代码:

WITH 
    SET [Alpha And Beta And Theta] AS
        NONEMPTY (
            { [Dwtbl Dim Test Alpha].[Alpha PK].MEMBERS } *
            { [Dwtbl Dim Beta].[Beta PK].MEMBERS } *
            { [Dwtbl Dim Theta].[Theta PK].MEMBERS }    
        )
    MEMBER Measures.TotalHits AS
    SUM ( [Alpha And Beta And Theta]
      , COALESCEEMPTY([Measures].[Hits],0)
    )
    MEMBER [Measures].[PrevMonth_TotalHits] AS
        (ParallelPeriod ([Date].[CalendarYear].[Month NK]
           , 1
           , [Date].[CalendarYear].Currentmember
        )
       ,[Measures].[TotalHits]
      )
    SELECT              
        {
            [Measures].[TotalHits],
            [Measures].[PrevMonth_TotalHits]
        } ON COLUMNS
    FROM [cubAgents]
    WHERE ( [Date].[Year].[2013],
            [Date].[Month NK].[7])

现在,当我在7月份通过时,代码按预期工作;我从七月和六月得到了点击数。但是,当我在八月[8]中通过但尚未发生时,我在当前和上个月都获得了null。

为什么会这样?好吧,我的[Alpha和Beta And Theta]是一个非常大的非交叉连接,每个维度都不会发生,因为它在未来。如果我删除非空,它将工作得很好......但需要3分钟才能完成。我花了太多时间在这上面,我想是时候联系专家了。

也许有一种方法可以直接汇总上个月的[Hits]度量,而不是使用parallelPeriod,比如

    MEMBER [Measures].[PrevMonth_Hits] AS
    SUM ( {[Alpha And Beta And Theta]*[Date].[CalendarYear].Currentmember.LAG(1)}
      , COALESCEEMPTY([Measures].[Hits],0)
    )

这不起作用。

非常感谢任何帮助。谢谢!

0 个答案:

没有答案