软件版本 Pentaho BIServer 5.0.1-ce
Pentaho CDE 14.03.07 (Stable)
上一篇介绍了一下Pentaho CDE使用文件的组织和结构这一篇来介绍一下图形之间的联动即点击一个图形的一部分另一个图形显示点击部分的下一级或更详细的内容。
(上一篇说要介绍一下CDE的目录结构,如果只是用CDE的话是不用了解目录结构的,这一话题放在后面再讲这里先让大家用起来再说)
先来看一看最终做出来的效果是什么样的如图:
下面就详细的说一下具体怎么实现
一、思路
在第一篇中已经讲了如何生成一个饼形图和一个和一个柱形图(如果不清楚请看这里),这里只需要做的是在点击饼形图中的一部分时改变柱形图数据源的查询参数并重绘图形。思路清楚了之后找出这里实现的关键点如下:
1、点击饼形图时获取点击部分的对应值
2、响应点击事件并把获取的值传递给柱形图数据源
3、重绘图形
二、具体实现
这里基于第一篇的继续,这里我们已经有了一个饼形图和一个柱形图,打开CDE编辑页面选中组件面板(Components panel),在组件下面选中PieChar 右边就会显示出其对应的属性如图:
将这里的clickable设置为true,编辑clickAction 定义事件响应方法
click=function(s){ var category=s.atoms.category; var series=s.atoms.series var value=s.atoms.value Dashboards.fireChange("simplepara",category.toString()) }
这里的参数s为scene的一个实例,里面包含饼形图被点击部分的数据
s.atoms.category //获取类别 就是以这个字段分类的字段值
s.atoms.series //获取系 就是 取值字段名
s.atoms.value //获取值 这个值越大图形中占的比例越多
Dashboards.fireChange(parameterName,parameterValue)
parameterName:参数名
parameterValue:参数值
这个函数做两件事
第一、更新CDF管理的参数的值(CDE是基于CDF的图形的生成和参数管理都是基于CDF的Dashboards是CDF管理的核心类)
第二、重绘所有图形
这里Dashboards.fireChange要改变的参数名为parameterName但是我们的组件里还没有这个参数
向组件中加入Simple parameter (Generic->Simple parameter)将其Name设置成simplepara将Property value设置成参数的默认值我这里设置成我的机构代码2200001
下面设置柱形图
选中组件中的BarChar将Listeners设置成侦听参数parameterName侦听其值的改变,将Parameters设置映射成其内部参数orgname如图:
修改BarChar的数据源为bar_data 在数据源中新建sql over sqlJdbc 设置相应数据库连接参数,并设置Parameters为BarChar内部参数orgname并设置类型为string,将参数设置到SQL语句中
SELECT depcode ,sum(fee) as total FROM `registerrecords` r left join department o on r.depcode=o.depcode where r.depcode=${orgname} group by r.depcode
这里用${orgname}将参数orgname的值引入到SQL中
注:设置类型很重要这样SQL数据查询处理的时候增加对应的转换如string会加单引号(')
OK 保存文件点击预览并点击饼形图的一部分看看效果吧!
本人接触Pentaho时间不长如果文中有错误望高手指出谢谢!
如果对文中有疑问请联系我
我的Email:[email protected]
我的博客:http://alenzhai.iteye.com/
下期预告:Pentaho CDE 组件使用说明