我遇到需要根据列(DatetimeA)进行过滤的情况。 DatetimeA中的值采用19990101格式(yyyyMMdd)。我需要过滤我的数据,只显示过去60天。
Mdx查询:
SELECT NON EMPTY {Measures].[DateA] } ON COLUMNS
,NON EMPTY { [Date].[DatetimeA].[DatetimeA].ALLMEMBERS )
}DIMENSION PROPERTIES MEMBER_CAPTION
,MEMBER_UNIQUE_NAME ON ROWS
FROM (
SELECT ([Date].[DatetimeA].& [20170118] : [Date].[DatetimeA].[20170318])
ON COLUMNS
FROM [TABMODEL]
) CELL PROPERTIES VALUE
,BACK COLOR
,FORE COLOR
,FORMATTED_VALUE
,FORMAT_STRING
,FONT_NAME
,FONT_SIZE
,FONT_FLAGS
我们如何过滤DatetimeA列以仅显示过去60天?我不需要对值进行硬编码,而是根据当天的需要改变一些东西。在ssrs中,这将是DatetimeA之间的格式(格式(dateadd(“d”, - 60,今天()),“yyyyMMdd”)和(格式(dateadd(“d”,0,今天()),“yyyyMMdd” )。 请在上面的查询中包含更改。谢谢!
答案 0 :(得分:1)
以下代码必须在SSAS端生成动态集:
{
StrToMember('[Date].[DatetimeA].[DatetimeA].&[' + Format(Now(),'yyyyMMdd') + ']')
:
StrToMember('[Date].[DatetimeA].[DatetimeA].&[' + Format(Now(),'yyyyMMdd') + ']').Lag(59)
}
另外,您可以添加SSRS参数以获取当前日期,并将StrToMember添加到MDX代码中。