传递可选参数

时间:2016-08-19 07:29:06

标签: reporting-services parameters mdx olap spagobi

直升机。今天是我与OLAP raport的另一个战斗日,可选参数。我有MDX查询的问题。我是这样写的:

select
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS,
NON EMPTY {
IIF(ISEMPTY([CUSTOMER].[${param}]) //CHECKING IF PARAMETER IS EMPTY
,{[CUSTOMER].[COUNTRY].Members},
{[CUSTOMER].[${param}]}
)
}ON ROWS
from [TRANSACTIONS]

${param}是我[CUSTOMER].[COUNTRY]的可选参数。我取消选中" required"检查我的参数的按钮,因此OLAP在没有参数的情况下执行后应该具有所有[VALUE]。并且存在一个问题,因为在启动我的OLAP raport参数之后可能想要填充一些东西。它给了我一个错误。

  

个人资料属性' param'不存在。

但我不想用profile属性填充它。我已经为我的参数创建了值列表和分析驱动程序,我用它将可能的值传递给我的列表框字符串参数 - ${param}

是否有可能使用可选参数的OLAP报告?这里有BI大师吗? 我会很乐意为你提供任何帮助。

更新:我做过类似的事情,我认为这种语法是正确的,(我正在查看SpagoBI示例)

WITH MEMBER [CUSTOMER].[SELECTED] AS ' Parameter("param") ' ,   SOLVE_ORDER = 2
MEMBER [CUSTOMER].[LEN] AS ' LEN(Parameter("param")) ',    SOLVE_ORDER = 1
select
NON EMPTY {{[Measures].[VALUE]}} ON COLUMNS,
NON EMPTY {
IIF([CUSTOMER].[LEN]=0
,{[CUSTOMER].[COUNTRY].Members},
{[CUSTOMER].[CUSTOMER].[SELECTED]}
)
}ON ROWS
from [TRANSACTIONS]

但现在我对两种可能性(设置/未设置)参数

都有相同的错误
  

javax.servlet.jsp.JspException:org.apache.jasper.JasperException:javax.servlet.ServletException:javax.servlet.jsp.JspException:com.tonbeller.jpivot.olap.model.OlapException:1

有什么想法吗?谢谢:))

1 个答案:

答案 0 :(得分:1)

此问题是您以前帖子的直接副本:

https://stackoverflow.com/questions/38970610/olap-report-with-optional-parameter

$ {param}是字符串吗?

如果是字符串,那么以下内容应该起作用:

WITH MEMBER [Measures].[x] AS ${param}
SELECT
NON EMPTY {[Measures].[x]} ON COLUMNS
FROM [TRANSACTIONS];

它有用吗?

如果它不起作用那么问题实际上并不是mdx相关的 - 因为某些原因你的语法或参数移动到客户端的方式是错误的。

注意

以上相当于这个超级简单的脚本:

WITH 
  MEMBER [Measures].[x] AS "hello world" 
SELECT 
  NON EMPTY 
    {[Measures].[x]} ON 0
FROM [Adventure Works];

你有AdvWrks立方体吗?试试这些:

WITH 
  MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
  {
    IIF
    (
      (IsEmpty([Measures].[x])) //<< this returns False
     ,[Product].[Product Categories].[Category].MEMBERS
     ,{[Measures].[x]}          //<< this is what IIF returns
    )
  } ON 0
FROM [Adventure Works];

它返回:

enter image description here

现在我测试了IsEmpty:

WITH 
  MEMBER [Measures].[x] AS "I'm not empty" 
SELECT 
  {
    IIF
    (
      (NOT //<< added this to check functionality of IsEmpty
        IsEmpty([Measures].[x]))
     ,[Product].[Product Categories].[Category].MEMBERS //<< this is what IIF returns
     ,{[Measures].[x]}
    )
  } ON 0
FROM [Adventure Works];

我们得到以下信息:

enter image description here

我认为在你的场景中发生的是这个 - param不是空的,但实际上是一个零长度的字符串:

WITH 
  MEMBER [Measures].[x] AS "" 
SELECT 
  {
    IIF
    (
      (
        IsEmpty([Measures].[x]))
     ,[Product].[Product Categories].[Category].MEMBERS
     ,{[Measures].[x]}  //<< the zero length string goes to here
    )
  } ON 0
FROM [Adventure Works];

结果:

enter image description here

相关问题