我尝试进行查询,计算一段时间内指定时间范围内的度量总和。
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代码中做我想要的事情
答案 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]