如何筛选过去一年的MDX中的数据

问题描述:

我正在尝试编写一个MDX表达式,该表达式将返回上一年(即从今天到365天之前)的总开发票。我目前有:如何筛选过去一年的MDX中的数据

SELECT 
    NON EMPTY 
     { [Measures].[Invoiced] } 
    ON COLUMNS 
FROM 
    ( 
    SELECT 
     ( 
      [Date Invoiced].[Day].&[2013-10-01T00:00:00] 
      : [Date Invoiced].[Day].&[2014-10-01T00:00:00] 
     ) ON COLUMNS 
     FROM [Sales] 
    ) 

我想的东西,如Now(),并且2013-10-01T00:00:00的东西,如(Now()-365))更换2014-10-01T00:00:00,但一直未能找到正确的语法。

MDX要在PowerPivotExcel 2010不支持暴露VBA参数一起使用,所以我不能以编程方式替代日期。

+0

您可以在Excel中创建自定义设置?我没有使用PP,所以不确定自定义集是否有帮助 - 一旦创建了自定义集,可以将它添加到主键的背景? – whytheq 2014-10-07 19:54:53

+0

是PP从表格模型中获取数据吗? – whytheq 2014-10-07 19:55:44

+0

@whytheq - PowerPivot通过MDX查询从SQL Server分析服务器多维数据集获取其开票数据,而不是从表格模型获取。我不确定“Excel中的自定义设置”是什么意思。 – 2014-10-08 09:24:12

您可以使用mdx上的滞后函数,此函数返回维度内提供的成员之前的成员n位置的值。

下面是该函数的引用: http://mdxpert.com/Functions/MDXFunction.aspx?f=37

这里是我使用的滞后从一个维度得到以前的值,在这种情况下,我得到了前一年的价值。

MEMBER [Measures].[Previous] as ([Data].CurrentMember.lag(12), [Measures].[Example]) 
+0

滞后函数当然可以成为解决这个问题的一部分,但主要问题仍然存在 - 如何在今天和今天(今天 - 12个月)之间的滑动时间间隔中选择所有成员。这个例子展示了如何比较一个值与之前12个时间段相同的值,这不是我想要做的。你能否改进这个例子来展示如何替换原始问题中的硬编码日期? – 2014-12-02 07:05:15