MDX查询过滤器

时间:2017-03-19 01:42:07

标签: filter ssas mdx where-clause

我遇到需要根据列(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” )。 请在上面的查询中包含更改。谢谢!

1 个答案:

答案 0 :(得分:1)

以下代码必须在SSAS端生成动态集:

{
    StrToMember('[Date].[DatetimeA].[DatetimeA].&[' + Format(Now(),'yyyyMMdd') + ']')
    :
    StrToMember('[Date].[DatetimeA].[DatetimeA].&[' + Format(Now(),'yyyyMMdd') + ']').Lag(59)
}

另外,您可以添加SSRS参数以获取当前日期,并将StrToMember添加到MDX代码中。