Pentaho CE仪表板中的MySQL查询参数

时间:2018-05-21 05:27:18

标签: mysql pentaho pentaho-cde mysql-parameter

首先,我在 Pentaho CE 8.0。而且我不是 Pentaho 的专家。

问题似乎很简单,但我无法使其发挥作用。我正在尝试使用仪表板在 MySQL查询中为WHERE条件使用简单参数。 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) 

当我启动仪表板时,我会获得包含销售代表名称的选择列表。当我选择一个时,id会显示在文本组件中,但表格仍为空白"表格中没有可用的数据"。

如果我对条件"WHERE salesrep='mike'"进行硬编码,我会得到客户列表。

使用参数"WHERE salesrep=${salesrep_selection}",MySQL查询日志显示它获得"WHERE salesrep=null"。因此参数不会发送到查询。

我还尝试使用[["salesrep_selection","salesrep_selection"]],设置数据源参数,但表仍然为空"表中没有可用的数据",并且MySQL查询日志显示"WHERE salesrep='salesrep_selection'".

我在互联网上搜索了很多,而不是很多关于此的文章,但无论如何,我发现的正是我实施的内容。而且我仍然无法正常工作。

Pentaho CE 8.0中的参数处理方式有何不同?查询参数呢?

1 个答案:

答案 0 :(得分:0)

您需要将参数从组件传递到数据源。

  1. 将名为salesrep_selection的参数值salesrep_selection添加到表组件的属性Parameters。这将在组件中设置参数,并将其值传递给数据源。
  2. 在数据源的属性Parameters中添加相同的参数。这将在数​​据源中设置参数,并将其值传递给查询。
  3. 表组件(按销售代表列出的客户列表):

    - 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"]]