首先,我在 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中的参数处理方式有何不同?查询参数呢?
答案 0 :(得分:0)
您需要将参数从组件传递到数据源。
salesrep_selection
的参数值salesrep_selection
添加到表组件的属性Parameters
。这将在组件中设置参数,并将其值传递给数据源。 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"]]