Как добавить опцию «Выбрать все» для выбора компонента в CDE

для студенческих проектов мы работаем с Pentaho CDE, чтобы создать панель инструментов. Поначалу все работает нормально, но сейчас мы зависаем на том, что добавляем более одного Select Component. Мы вставили параметры компонентов выбора в SQL-запросы в операторе Where, но теперь у нас есть проблема, заключающаяся в том, что невозможно выбрать все элементы в одном компоненте выбора и только один в других. Пространство выборки становится все меньше и меньше, чем больше параметров мы добавляем, потому что мы не можем понять, как выбрать все параметры в одном компоненте выбора и отправить все это в запрос. Возможно ли в CDE добавить параметр «выбрать все элементы» к выбранному компоненту? Или даже деактивировать выбранный компонент и отправить эту деактивацию в SQL-запрос?

Мы заметили, что есть компонент с множественным выбором, но мы не смогли обработать необходимый для него настраиваемый параметр. Было бы хорошо, если бы он работал с выбранными компонентами.

Заранее спасибо за вашу поддержку.


person tobi1111    schedule 03.09.2014    source источник


Ответы (3)


Используйте выражение SQL CASE:

SELECT * FROM table WHERE city LIKE (случай, когда ${city} = 'ALL', затем '%' ELSE ${city} end)

person Jorge Nunez Newton    schedule 17.11.2015

Два подхода:

  1. В вашем запросе с одним выбором добавьте (возможно, жесткое кодирование) параметр «Все» и научите некоторую логику JS, как с этим справиться;

  2. Используйте компоненты с множественным выбором. Однако имейте в виду, что значения параметров в компоненте множественного выбора хранятся в виде массива в javascript, тогда как значение параметра будет передано в запрос в виде списка, разделенного запятыми. Итак, если вы хотите использовать параметр множественного выбора в SQL-запросе, вы, скорее всего, будете использовать его внутри условия IN.

Наконец, проверьте файл pentaho.log. Там будут регистрироваться ошибки и исключения.

person nsousa    schedule 04.09.2014

Если вы не хотите, используйте лайк.

SELECT * from table_name where column_name = case when ${param} = 'ALL' then column_name else ${param} end
person Man Nguyen Dinh    schedule 18.08.2016