2016-04-06 40 views
0

我已經看到一些關於MDX轉義字符的問題,但他們關注的是具有指定值的查詢。我有一個動態的mdx,其值將由用戶指定。這是MDX:mdx轉義字符CDE Pentaho

SELECT 
    NON EMPTY {Hierarchize({[Measures].[INDICADOR]})} ON COLUMNS, 
    NON EMPTY {Hierarchize({[NOW].[NOW].Members})} ON ROWS 
    FROM [UNION_NOW] 
    WHERE CrossJoin({[PARENT].[${parentParameter}]} 

外卡是基於我的選擇:

SELECT 
    NON EMPTY {Hierarchize({[NOW].[NOW].Members})} ON COLUMNS, 
    NON EMPTY {Hierarchize({[PARENT].[PARENT].Members})} ON ROWS 
    FROM [UNION_NOW] 

如何在這種情況下套用「轉義值」?

+0

爲什麼第一個腳本的WHERE子句中有'crossjoin'? 'WHERE CrossJoin({[PARENT]。[$ {parentParameter}]}' – whytheq

+0

MDX是由SAIKU嚮導創建的,我不確定爲什麼會有一個交叉連接,我仍然試圖理解該工具。 –

回答

0

要解決的最佳方法是使用選擇組件的PRE/POST執行事件,具體取決於您使用的CDE組件。

對於類似的情況

  • 我用其從SQL查詢
  • 基於用戶選擇,我使用的查詢組件的預執行事件帶來的數據的選擇部件,以產生where子句和設置即where子句中的「簡單參數」組件
  • 最後在MDX Query中使用該簡單參數來加入動態where子句。

您還可以使用選擇組件,執行後生成一個動態where子句,並設置中的參數,然後使用參數在MDX/SQL查詢

希望它能幫助。

+0

嗨,謝謝回答。 –

+0

嗨,謝謝你的回答。 我仍然試圖理解這個工具,而我正在使用它 我已經創建了一個具有簡單參數的選擇組件,$ {parentParameter}來自 讓我更好地解釋發生了什麼事情,我的第一個MDX用於圖表,第二個用於選擇器。當用戶選擇一個具有特殊字符「[]」的值時,圖表會收到錯誤,因爲「 []「是MDX語法的一部分,我必須在圖表執行之前轉義」[]「 可以執行在你提到的查詢組件的條件?如果是這樣,有沒有例子? –

+0

好吧,我沒有一個例子。但這正是我經歷過的事情。試試這個,我會試着更具體的 - 在你的報告中創建一個新參數稱爲param_chart,讓你的圖表在這個參數上運行,而不是在你的父母表中運行 - 轉到你選擇的組件,轉到高級屬性,轉到執行後並將腳本寫爲 函數fn(){0} {0} {0} {0} myvalue = $(「parentParameter」)。val(); myvalue = myvalue.replace(「[」,「」)。replace(「]」,「」); $(「param_chart」)。val(myvalue); } – user18620