1

多くの異なる集計を含むキューブを作成しましたが、集計はすべて 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 月に合格すると、コードは期待どおりに機能します。7 月と 6 月のヒット カウントを取得します。しかし、まだ発生していない 8 月 [8] を過ぎると、当月と前月の両方が null になります。

なぜこれが起こるのですか?さて、私のセット [Alpha And Beta And Theta] は大きな非空 crossjoin であり、各次元は未来にあるため発生しません。空でないものを削除すると、問題なく動作しますが、完了するまでに 3 分かかります。私はこれにあまりにも多くの時間を費やしてきたので、専門家に連絡する時が来たと思います.

おそらく 1 つの方法は、parallelPeriod を使用するのではなく、前月の [Hits] 測定値を直接合計することです。

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

これはうまくいきません。

どんな助けでも大歓迎です。ありがとう!

4

0 に答える 0