Параметры запроса MySQL на панели инструментов Pentaho CE

Во-первых, я использую Pentaho CE 8.0 и не являюсь экспертом по Pentaho.

Вопрос кажется простым, но я не могу заставить его работать. Я пытаюсь использовать на панели инструментов простой параметр для условия WHERE в запросе MySQL. Макет Bootstrap имеет 3 столбца, по одному для каждого компонента (фильтр, текст, таблица).

Простой параметр:

- Name: salesrep_selection  
- Property value: mike 

Компонент фильтра (для выбора торгового представителя):

- Name: salesrep_selection_filter  
- Parameter: salesrep_selection  
- Values Array: [["mike","Mike"],["paul","Paul"],["peter","Peter"]]  
- Value as Id: false  

Текстовый компонент: (просто для проверки правильности настройки параметра):

- Name: selection_show_text  
- Listeners: ["salesrep_selection"]  
- Expression: function() {return this.dashboard.getParameterValue("salesrep_selection");} 

Таблица (список клиентов по торговым представителям):

- Name: customers_list_table  
- Listeners: ["salesrep_selection"]  
- Datasource: customers_list_data  

Источник данных (запрос MySQL):

- Name: companies_list_data  
- Jndi: business_datawarehouse  
- Query: SELECT customerid,customername FROM customers WHERE salesrep=${salesrep_selection}  
- Parameters: [] (empty) 

Когда я запускаю панель инструментов, я получаю список выбора с именами торговых представителей. Когда я выбираю один, идентификатор отображается в текстовом компоненте, но таблица остается пустой «Нет доступных данных в таблице».

Если я жестко запрограммирую условие "WHERE salesrep='mike'", я получу список клиентов.

С параметром "WHERE salesrep=${salesrep_selection}" журнал запросов MySQL показывает мне, что он получает "WHERE salesrep=null". Таким образом, параметр не отправляется в запрос.

Я также пытался настроить параметры источника данных с помощью [["salesrep_selection","salesrep_selection"]],, но таблица остается пустой «Нет доступных данных в таблице», а журнал запросов MySQL показывает "WHERE salesrep='salesrep_selection'".

Я много искал в Интернете, не так много статей об этом, но в любом случае то, что я нашел, это именно то, что я реализовал. И все равно у меня ничего не получается.

Обрабатываются ли параметры в Pentaho CE 8.0 по-другому? Параметры запросов тоже?


person Sylvain    schedule 21.05.2018    source источник


Ответы (1)


Вам нужно передать параметр из компонента в источник данных.

  1. Добавьте параметр salesrep_selection со значением salesrep_selection в свойство Parameters компонента Table. Это установит параметр в компоненте и передаст его значение источнику данных.
  2. Добавьте тот же параметр в свойство источника данных Parameters. Это установит параметр в источнике данных и передаст его значение в запрос.

Таблица (список клиентов по торговым представителям):

- Name: customers_list_table  
- Listeners: ["salesrep_selection"]  
- Datasource: customers_list_data  
- Parameters: [["salesrep_selection", "salesrep_selection"]]

Источник данных (запрос MySQL):

- Name: companies_list_data  
- Jndi: business_datawarehouse  
- Query: SELECT customerid,customername FROM customers WHERE salesrep=${salesrep_selection}  
- Parameters: [["salesrep_selection", "salesrep_selection"]]
person mzy    schedule 21.05.2018
comment
Спасибо большое, mzy! Я пытался использовать параметры в источнике данных, но не пытался снова объявить параметры внутри вызывающего компонента (здесь компонент таблицы). - person Sylvain; 21.05.2018