簡體   English   中英

“選擇”組件中的Pentaho CDE“全部”選項

[英]Pentaho CDE “All” option in “Select” component

盡管select下拉組件中的“全選”功能似乎是一個簡單的功能,但我很難找到可行的解決方案。 我可以找到關於該主題的三個SO問題,但是沒有一種方法可以完全起作用。

如何添加全選選項以選擇CDE中的組件
Pentaho CDE重置參數
如何添加“全選”選項以選擇CDE中的組件?

我有一個表,其中的列包含1-5的評分(作為字符串類型)。 我需要為用戶提供從1-5或“ All”中選擇一個值的選項。

我創建了一個簡單的數據源(DB2),將數字1-5作為字符串。 在下面適用的情況下,我將UNION ALL加上''或”“ All”

SELECT ... WHERE (CAST(RATING AS CHAR) = CAST(${parameter} AS CHAR) OR ${parameter} = '')

SELECT ... WHERE (RATING = ${parameter} OR ${parameter} = '')

SELECT ... WHERE (RATING LIKE (CASE WHEN ${parameter} = 'All' THEN '%' ELSE ${parameter} END))

我使用預期的“選擇組件”和“簡單參數”功能。 我已經嘗試過將“參數屬性值”設置為等於'' ,“全部”和數字1-5,但是我只能使用 “全部” 數字選擇。 在這種方法的大約50次迭代中,我從未成功完成兩項工作。

有沒有簡單或直接的方法來添加“全部”選擇​​而不切換到多選組件或其他JavaScript?

如果我理解正確,則希望用戶能夠過濾此分級的某些信息(例如,電影列表),但是如果未選擇任何分級,則應顯示所有電影。

我已經多次遇到過這種情況,雖然這種解決方案可能不是最好的解決方案,但它很容易實現並且有效。

基本上,您創建一個SQL,在其中選擇select組件的數據

SELECT RATING
UNION
SELECT '...'
ORDER BY RATING

現在添加一個簡單的參數“ Rating”或任何您想調用的參數。 並在您的主查詢(需要過濾器)中使用它,如下所示:

SELECT 'all the data you want to show'
FROM 'your table'
WHERE 'your conditions'
AND
CASE WHEN ${Rating} NOT LIKE '...' THEN RATING = ${Rating} else RATING NOT IN ('dummy value') END 

“虛擬值”代表在RATINGS表中永遠不會出現的任何值。

我最終弄清楚了這一點(部分感謝@dooms和@ÓscarGómezAlcañiz的建議)。

當我為選擇器組件添加評級時,我強制所有內容都鍵入str以便可以包含“ All”組件:

SELECT 'All' AS RATING
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '1'
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2'
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '3'
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '4'
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '5'
FROM SYSIBM.SYSDUMMY1

然后在查詢表組件時,添加了以下條件:

WHERE (MY_RATING IN (${Rating_Parameter}) OR ${Rating_Parameter} LIKE ('All'))

由於某些原因,在“全部”上使用IN是不夠的。 該查詢僅在使用LIKE 但是,如上所述,一切終於按我的意願進行了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM