2016-06-28 107 views
0

我正在嘗試在ssas計算選項卡中編寫一個查詢,以便產生下面的結果。這就像我計算從2016年2月1日至今的YTD計算。我在Management Studio中編寫了以下查詢,但我需要將其轉換爲SSAS計算並將其寫入「計算」選項卡。從SSAS開始日期到今天的銷售總和SSAS中MDX計算

WITH 
    MEMBER [Measures].[ytd Sales Target 2] AS 
    Sum 
    (
     StrToMember 
     (
      '[Sales Date].[Date].&[' + Format(Now(),'yyyy-') + '02-01T00:00:00]' 
     ) 
     : 
     StrToMember 
     (
       '[Sales Date].[Date].&[' + Format(Now(),'yyyy-') + Format(Now(),'MM-') 
      + 
       Format 
       (
       Now() 
       ,'dd' 
      ) 
      + 'T00:00:00]' 
     ) 
    ,[Measures].[sales target] 
    ) 
SELECT 
    [Measures].[ytd Sales Target 2] ON 0 
FROM [sales]; 
+0

你有任何一種日期層次與年 - >月 - >日期?會使創建更加動態的計算更容易。 – mxix

回答

0

它應該是簡單的:

CREATE MEMBER CURRENTCUBE.[Measures].[ytd Sales Target 2] 
AS 
Sum 
    (
     StrToMember 
     (
      '[Sales Date].[Date].&[' + Format(Now(),'yyyy') + '-02-01T00:00:00]' 
     ) 
     : 
     StrToMember 
     (
       '[Sales Date].[Date].&[' + Format(Now(),'yyyy-MM-dd')+'T00:00:00]' 
     ) 
    ,[Measures].[sales target] 
    ), 
VISIBLE = 1; 

這樣不會佔用您的時間考慮。但只要稍作改動就可以「時間意識到」。我在2月1日之前添加了一些檢查日期以便忽略。

CREATE MEMBER CURRENTCUBE.[Measures].[ytd Sales Target 2] 
AS 
iif(
    [Sales Date].[Date].CURRENTMEMBER.MEMBER_KEY < StrToMember('[Sales Date].[Date].&[' + Format(Now(),'yyyy') + '-02-01T00:00:00]').MEMBER_KEY 
    ,NULL 
    ,Sum (
     StrToMember 
     (
      '[Sales Date].[Date].&[' + Format(Now(),'yyyy') + '-02-01T00:00:00]' 
     ) 
     : 
     StrToMember 
     (
       [Sales Date].[Date].CURRENTMEMBER 
     ) 
    ,[Measures].[sales target] 
    ) 

), 
VISIBLE = 1; 
+0

這會使用默認值'[Sales Date]。[Date] .CURRENTMEMBER <...'?或者它應該是'[Sales Date]。[Date] .CURRENTMEMBER.MEMBERVALUE <...'? – whytheq

+0

@whytheq照常=)你是正確的,它需要MEMBER_VALUE或MEMBER_KEY工作。我會用MEMBER_KEY去。 member_key更可能是INT或DATE。值可能是一個字符串。固定 – mxix