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

MySQL query parameters in a Pentaho CE dashboard

首先,我在 Pentaho CE 8.0. 而且我不是 Pentaho.

的专家

这个问题看起来很简单,但我做不出来。我正在尝试让仪表板在 MySQL 查询 中为 WHERE 条件使用一个简单的参数。 Bootstrap 布局有 3 列,每个组件一列(过滤器、文本、table)。

简单参数:

- Name: salesrep_selection  
- Property value: mike 

过滤组件(对 select 销售代表):

- 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");} 

Table 组件(按销售代表列出的客户):

- 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) 

当我启动仪表板时,我得到了包含销售代表姓名的 selection 列表。当我选择一个时,id 显示在文本组件中,但 table 仍然为空 "No data available in table".

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

使用参数 "WHERE salesrep=${salesrep_selection}",MySQL 查询日志显示它得到 "WHERE salesrep=null"。所以参数没有发送到查询。

我还尝试使用 [["salesrep_selection","salesrep_selection"]], 设置数据源参数,但 table 仍然为空 "No data available in table",并且 MySQL 查询日志显示 "WHERE salesrep='salesrep_selection'".

我在网上搜索了很多,没有很多关于这个的文章,但无论如何,我找到的正是我实现的。而且我仍然没有任何工作。

Pentaho CE 8.0 中的参数处理方式不同吗?查询参数也是?

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

  1. 将名为 salesrep_selection 且值为 salesrep_selection 的参数添加到 Table 组件的 属性 Parameters。这将在组件中设置参数并将其值传递给数据源。
  2. 在数据源的 属性 Parameters 中添加相同的参数。这将在数​​据源中设置参数并将其值传递给查询。

Table 组件(按销售代表列出的客户):

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