当前数据成员减去mdx查询的月数

时间:2017-05-04 20:05:07

标签: mdx

我尝试进行查询,计算一段时间内指定时间范围内的度量总和。

WITH MEMBER 
    [Measures].[calc] as 
        SUM (
            { [date.time].[day].CurrentMember.LEAD(-30):[date.time].[day].CurrentMember },
            [Measures].[my_value] 
        )
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS,
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube]

此代码有效,它返回给我当前成员加上之前的最后30个成员的总和,但我正在寻找一种方法来减去成员(在这种情况下是几天),几个月,因为没有所有月份都有30天,有什么方法可以做到这一点?因为如果没有,我的间隔的每一天都需要做一个请求在我的java代码中做我想要的事情

1 个答案:

答案 0 :(得分:0)

如果你有一个日月关系的层次结构(比如日历),你可以使用当天的父母:

WITH MEMBER 
    [Measures].[calc] as 
        SUM (
            { [date.time].[calendar].CurrentMember.LEAD(-30):[date.time].[calendar].CurrentMember },
            ([date.time].[calendar].CurrentMember.Parent.Lag(1),[Measures].[my_value]) 
        )
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS,
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube]

如果您没有层次结构,可以使用日期键将其重新生成月份密钥:

WITH MEMBER 
    [Measures].[calc] as 
        SUM (
            { [date.time].[day].CurrentMember.LEAD(-30):[date.time].[day].CurrentMember },
            (StrToMember('[date.time].[month].[' + left([date.time].[day].CurrentMember.Properties('Key'),7) + ']').Lag(1),[Measures].[my_value]) 
        )
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS,
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube]