SpagoBI OLAP 报告传递可选参数
SpagoBI OLAP report passing optional parameter
你好。今天是我与带有可选参数的 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 参数后可能想要填充一些东西。它给了我一个错误。
Profile attribute 'param' not existing.
但我不想用配置文件属性填充它。我已经为我的参数创建了值列表和分析驱动程序,我用它来将可能的值传递给我的列表框字符串参数 - ${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]
但现在我对两种可能性 (set/unset) 参数都有相同的错误
javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: 1
有什么想法吗?谢谢:)
此问题是您之前帖子的直接复制:
${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];
它returns这个:
现在我测试了 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];
我们得到以下信息:
我认为在你的场景中发生的是这样的——参数不是空的,但实际上是一个零长度的字符串:
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];
结果:
你好。今天是我与带有可选参数的 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 参数后可能想要填充一些东西。它给了我一个错误。
Profile attribute 'param' not existing.
但我不想用配置文件属性填充它。我已经为我的参数创建了值列表和分析驱动程序,我用它来将可能的值传递给我的列表框字符串参数 - ${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]
但现在我对两种可能性 (set/unset) 参数都有相同的错误
javax.servlet.jsp.JspException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: com.tonbeller.jpivot.olap.model.OlapException: 1
有什么想法吗?谢谢:)
此问题是您之前帖子的直接复制:
${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];
它returns这个:
现在我测试了 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];
我们得到以下信息:
我认为在你的场景中发生的是这样的——参数不是空的,但实际上是一个零长度的字符串:
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];
结果: