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 中的参数处理方式不同吗?查询参数也是?
您需要将参数从组件传递到数据源。
- 将名为
salesrep_selection
且值为 salesrep_selection
的参数添加到 Table 组件的 属性 Parameters
。这将在组件中设置参数并将其值传递给数据源。
- 在数据源的 属性
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"]]
首先,我在 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 中的参数处理方式不同吗?查询参数也是?
您需要将参数从组件传递到数据源。
- 将名为
salesrep_selection
且值为salesrep_selection
的参数添加到 Table 组件的 属性Parameters
。这将在组件中设置参数并将其值传递给数据源。 - 在数据源的 属性
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"]]