SSRS MDX for Pre两周前的数据

时间:2014-06-02 12:39:14

标签: sql-server reporting-services mdx lag olap-cube

我正在尝试将当前日历周的数据提供给前两周。如果我在MDX查询中将日期范围指定为参数,则表格会正确填充。

SELECT NON EMPTY {[Measures].[planned_cumulative],[Measures].[Last Forecast CW] } ON   COLUMNS, 

NON EMPTY { ([Project].[Projekt-Task].[Task].ALLMEMBERS*  { [Date].[Date - CW].[Week].&[2014]&[201420] : [Date].[Date - CW].[Week].&[2014]&[201422]})} ON ROWS FROM [DWH]

但是如果我尝试使用滞后函数,我会收到错误。这是MDX查询。

SELECT NON EMPTY {[Measures].[planned_cumulative],[Measures].[Last Forecast CW] } ON   COLUMNS, 

NON EMPTY { ([Project].[Projekt-Task].[Task].ALLMEMBERS*  [Date].[DATECW - CW].[Week].CurrentMember.Lag(2) ) } ON ROWS 

FROM [DWH]

1 个答案:

答案 0 :(得分:0)

您的第一个查询(非常正确)通过使用以冒号分隔的维度中的两个成员来标识两周的范围,即[第X周]:[第Y周]。

您的第二个查询使用LAG函数,该函数将返回维度上的成员,而不是一系列成员。

试试这个:

SELECT NON EMPTY {[Measures].[planned_cumulative],[Measures].[Last Forecast CW] } ON   COLUMNS, 

NON EMPTY {[Project].[Projekt-Task].[Task].ALLMEMBERS * TAIL([Date].[Date - CW].[Week],3) } ON ROWS 

FROM [DWH]

此外,您的第一个查询引用[日期]。[日期 - CW]。[周]而您的第二个查询使用[日期]。[DATECW - CW]。[周]。当你说查询有效时,我已经选择了第一个选项。

如果有帮助,请告诉我。

编辑:为此道歉。我已经修改了查询以使用TAIL函数,该函数将从最后开始并向后工作的集合中提供许多元组。因此,使用TAIL({Set Of Weeks},3),这应该会给你当前周和前两周。我在我的立方体上测试了类似的查询,它似乎产生了预期的结果。

希望能为你解决这个问题。