SSAS - 将MDX报告参数传递给MDX DataSet查询

时间:2013-08-27 11:08:55

标签: ssas mdx olap olap-cube

在基于多维数据集的MDX报告中,日期的输入帮助必须是日历,因此参数的日期/时间类型是必不可少的。我过滤数据的时间维度字段是Integer。示例值:20130827.

我的数据集查询如下所示:

 SELECT NON EMPTY { [Measures].[Hours In Track] } ON COLUMNS, NON EMPTY {
 ([Dim Date].[Date ID].[Date ID].ALLMEMBERS * [Dim Division].[Hierarchy].[Division ID].ALLMEMBERS ) }
 DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM
 ( SELECT ( STRTOSET(@DimDivisionHierarchy, CONSTRAINED) ) ON COLUMNS FROM
 ( SELECT ( STRTOMEMBER(@FromDimDateDateID, CONSTRAINED) : STRTOMEMBER(@ToDimDateDateID, CONSTRAINED) ) ON COLUMNS FROM [BicepsArveCube]))
 CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

我使用了一个显示我的文本字段,日期/时间类型参数值如下所示: 2013-08-05 00:00:00,虽然我的DateID是Integer类型,所以我需要做转换。

在数据集参数选项卡中,我将参数值指定为表达式:

="[Dim Date].[Date ID].&["
 & Replace(Replace("2013-08-05 00:00:00", "-", ""), " 00:00:00", "")
 & "]"

我按预期获得数据,一切正常。但是当我将硬编码的日期/时间值更改为参数值(类型日期/时间)时:

="[Dim Date].[Date ID].&["
 & Replace(Replace(Parameters!FromDimDateDateID.Value, "-", ""), " 00:00:00", "")
 & "]"

我遇到约束违规错误。我不知道为什么,因为如上所述,Parameters!FromDimDateDateID.Value看起来与我使用的硬编码值完全相同。

我使用文本字段检查转换后在两种情况下获得的表达式(硬编码日期和从日历中选择的相同日期并作为参数值传递),它看起来完全相同:

[Dim Date].[Date ID].&[20130805]

1 个答案:

答案 0 :(得分:3)

尝试

STRTOMEMBER(
  "[Dim Date].[Date ID].&["
 + Replace(Replace(@FromDimDateDateID, "-", ""), " 00:00:00", "")
 + "]",
CONSTRAINED)

在MDX中 - 由Analysis Services解释 - 您无法访问Parameters等Reporting Services对象。相反,它们的值与MDX语句一起发送到Analysis Services服务器,MDX语句可以使用@表示法引用它们。