我正在使用Pentaho CDE构建仪表板,其中的表将显示来自以下查询的数据:
select * from types where id = ${id}
现在我从像这样的url参数中获取ID
id = Dashboards.getQueryParameter('id');
如果我没有在网址中提供ID,则该表将不显示任何内容,因为id =''不匹配任何内容。但是我想做的是,如果我不给出id,它将排除where子句并显示查询结果,例如
select * from types
如何在pentaho CDE中实现这一目标?
您可以使用两个数据源,并在Pre Execution
表阶段选择一个。仪表板组件(表格,图表)的数据源由property表示dataAccessId
。
您可以dataAccessId
在组件内部设置使用JavaScript代码,如下所示:this.chartDefinition.dataAccessId = {datasource name}
。
1)资料来源sql_with_id
:
select * from types where id = ${id}
2)数据源= sql_no_id
:
select * from types
表的Pre Execution
代码:
function f() {
var id = Dashboards.getQueryParameter('id');
if (id && id !== "") {
this.chartDefinition.dataAccessId = "sql_with_id";
} else {
this.chartDefinition.dataAccessId = "sql_no_id";
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句