SSAS中的MDX计算,用于从开始日期到今天的销售总额

时间:2016-06-28 10:39:02

标签: sql sql-server ssas mdx

我正在尝试在ssas计算选项卡中编写一个查询,该查询应生成以下结果。这就像我从2016年2月1日到今天计算的YTD计算。我在Management Studio中编写了以下查询,但我需要将其转换为SSAS计算并将其写入计算选项卡。

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];

1 个答案:

答案 0 :(得分: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;