2016-08-19 96 views
1

Helo。今天是我與OLAP raport的可選參數的又一個戰鬥日。我有MDX查詢問題。我寫的是這樣的:SpagoBI OLAP報告傳遞可選參數

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]可選參數。我沒有選中「需要」檢查按鈕爲我的參數,所以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

你做了哪些測試?你能傳遞一個參數到任何mdx腳本中嗎?我建議設置一個非常簡單的腳本(比如我在之前的文章中包含的!)來試圖找出您的客戶是否看到$ {param}的值? – whytheq

+0

[可選參數OLAP報表]的可能的複製(http://stackoverflow.com/questions/38970610/olap-report-with-optional-parameter) – whytheq

+0

當我選擇從列表框中我的參數值,它執行罰款,當我手動將參數值放在我的MDX中,它也會執行。但是,當參數爲空時,我的OLAP不知道MDX查詢中的「$ {param}」是什麼。我可以將參數傳遞給我的mdx。如果我檢查參數是必需的,OLAP可以正常工作,但我需要可選參數。如果未經檢查,報告應包含所有數據。 – LucasPG

回答

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

我想在您的情況正在發生,這是 - 該參數是不是空的,但實際上是一個零長度字符串:

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

+0

我的MDX查詢編輯告訴我,**意外字符「$」 **我不知道什麼是錯與SpagoBI語法 – LucasPG

+0

@LucasPG我添加另一種可能性 - 也許是零長度字符串在 – whytheq

+0

獲得通過我那麼,怎樣才能在我的IFF檢查條件如果$ {參數}長度等於0? – LucasPG