MDX查询以提取日期并将其用作字符串以过滤数据

时间:2019-10-16 11:47:49

标签: ssas mdx

我有一个名为预测版本的字段,该字段以“ FY20一月预测”的格式存储版本,而销售时间字段则存储日期。我想要的是我的MDX查询,以根据当前日期过滤最近两个预测版本的数据。 例如。如果当前日期为2019年10月,则应向我显示 20财年9月预测 20财年10月预测的数据。

我想使用它类似于SQL中的where条件。

1 个答案:

答案 0 :(得分:0)

看下面的例子。在我的第一个查询中,我要查询“ Internet销售金额” 为2013年5月。

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
[Date].[Calendar].[Month].&[2013]&[5]
on rows 
from 
[Adventure Works]

接下来,我们将其修改为返回“ 2013年5月”之前的两个月

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
([Date].[Calendar].[Month].&[2013]&[5]).lag(2):([Date].[Calendar].[Month].&[2013]&[5]).lag(1)
on rows 
from 
[Adventure Works]

编辑:使查询动态化

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
strtoset('[Date].[Calendar].[Month].&['+cstr(datepart("yyyy",Now()))+ ']&['+cstr(datepart("m",Now()))+'].lag(2):[Date].[Calendar].[Month].&['+cstr(datepart("yyyy",Now()))+ ']&['+cstr(datepart("m",Now()))+'].lag(1)')
--Output of the above expression is 
--[Date].[Calendar].[Month].&[2019]&[10].lag(2):[Date].[Calendar].[Month].&[2019]&[10].lag(1)
on rows 
from 
[Adventure Works]