2016-06-28 62 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