【问题标题】:Parameter Does Not Work in MDX Subselect Filter参数在 MDX 子选择筛选器中不起作用
【发布时间】:2017-02-25 16:38:33
【问题描述】:

我有以下 MDX 查询:

SELECT 
  NON EMPTY 
    Measures.[Enrolments] ON COLUMNS,
  NON EMPTY 
    ( STRTOMEMBER(@FromISOYear, CONSTRAINED) : 
    STRTOMEMBER(@ToISOYear, CONSTRAINED) ) ON ROWS
FROM (
 SELECT
      Filter
      (
            [Term Start Date].[ISO Year].Children *
            [Term Record Creation].[ISO Year].Children *
            [Term Record Creation].[ISO Week Number Of Year].Children
       ,
        Cint([Term Record Creation].[ISO Week Number Of Year].CurrentMember.Member_Key) <= Cint( STRTOMEMBER(@ToISOWeekNumberOfYear, CONSTRAINED) )
        OR
        Cint([Term Record Creation].[ISO Year].CurrentMember.Member_key) < Cint([Term Start Date].[ISO Year].CurrentMember.Member_key)
      ) ON COLUMNS
  FROM [Enrolments]
); 

基本上,过滤器表达式在ISO Week Number of Year 不是参数时起作用,例如如果我将过滤器表达式更改为 [ISO Week Number of Year] &lt;= 7 它会提供正确的结果。当我从 SSRS 传递相同的值作为参数时,我得到不正确的结果 - 似乎没有应用过滤器。

有人能解释一下为什么会这样并提供解决方法吗?

【问题讨论】:

  • 如何定义参数的value属性?它是否由 MDX 查询驱动并每周使用 MDX UniqueName?还是只是整数的下拉?
  • 我注意到您在这里缺少 Member_Key:Cint( STRTOMEMBER(@ToISOWeekNumberOfYear, CONSTRAINED).Member_Key )
  • @GregGalloway Member_Key 修复了它。如果你把它作为一个答案,我可以接受。感谢您的帮助。

标签: sql-server reporting-services mdx sql-server-2016


【解决方案1】:

我注意到您在这里缺少 Member_Key。更改以下内容:

Cint( STRTOMEMBER(@ToISOWeekNumberOfYear, CONSTRAINED) )

收件人:

Cint( STRTOMEMBER(@ToISOWeekNumberOfYear, CONSTRAINED).Member_Key )

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2021-02-25
    • 2012-05-05
    • 2017-01-07
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多