直升机。今天是我与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
有什么想法吗?谢谢:))
答案 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];
它返回:
现在我测试了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];
我们得到以下信息:
我认为在你的场景中发生的是这个 - 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];
结果: