用Pentaho Report Design制作柱状图

已经安装了Pentaho Report Design,现在使用它来设计柱状图。

新建bar模版

如果才打开,可以看到有一些Samples模版可以选择,直接点击Charts和Bar即可。如图:
用Pentaho Report Design制作柱状图

或者新建一个空白的report模版,然后选中左边工具栏的chart工具,拖动到Report Header中,并拖动产生的图标调整大小。
用Pentaho Report Design制作柱状图

新建完毕后效果如图:
用Pentaho Report Design制作柱状图

添加数据源

点击导航栏中的database图标或者右侧栏的Data对着Data Sets右键如下图:
用Pentaho Report Design制作柱状图
用Pentaho Report Design制作柱状图

我们这里以MongoDB为例。
配置ip和端口以及数据库名称集合以及查询条件以及获取字段名。
用Pentaho Report Design制作柱状图
用Pentaho Report Design制作柱状图
用Pentaho Report Design制作柱状图
用Pentaho Report Design制作柱状图

增加成功我们看到Data中已经有mongodb的数据源了。
如图:
用Pentaho Report Design制作柱状图

左键点击连接 点击preview可以预览数据。
需要注意的是,新建数据源时,使用默认的命名Query1即可,千万不要改成其他命名,否则有可能mongodb字段会解析不出来如下图。
用Pentaho Report Design制作柱状图

新增计数字段

为报表添加参数,右侧Data选项卡下方Parameters - Add Parameter。
这里支持常量,也可以使用数据源中的数据作为查询参数,例如${id}。
用Pentaho Report Design制作柱状图
用Pentaho Report Design制作柱状图

设计表格格式

把右边数据源中需要统计的字段拖动到左边Details栏目中。
用Pentaho Report Design制作柱状图

然后点击Report Header中的Bar图表进行编辑。
用Pentaho Report Design制作柱状图

最终设置参数如下:
用Pentaho Report Design制作柱状图
chart-title 表示图表的标题
title-font 标题字体一般选择宋体等中文字体否则显示空白
label-font 横坐标字体
legend-font 小分类series字体,找不到series-font,设置该项生效
x-font 横坐标字体
y-font 纵坐标字体
category-column表示横坐标分类
value-columns表示纵坐标的值字段(会自动汇总)
series表示横坐标每个分类下的小的分类
series-by-value根据值来分类
series-by-field根据字段来分类
auto-generate-series为true设置自动生成小分类

Y坐标刻度调整
首先要把自动设置Y坐标的功能关闭
y-auto-range设置为false,否则刻度不生效。
y-min和y-max设置最大最小值,通过这两个值可以调整可视区域和柱状长短。
y-scale-factor为刻度值,可以设置为1.0等等。
y-tick-fmt-str为精度。保留整数设置为#,保留一位小数设置为#.#。

查看效果

最终效果如图:
点击导航工具栏的绿色箭头run按钮print preview进行预览。
用Pentaho Report Design制作柱状图

效果如图:
成功统计出了每个人的工作量。
注意预览的话 下面表格部分显示是不完全的,只是作为格式的示例。
如果需要看完整的数据,使用其他格式查看,或者左上角导航工具栏File–》Export导出查看。
用Pentaho Report Design制作柱状图

可能遇到的问题

pdf,excel等查看导出中文不显示

选中 Details中字段名称,点击左上角导航工具栏中的Format,选择Font,选中中文字体即可。
用Pentaho Report Design制作柱状图

chart中的字段则需要在左边把相应的font选中中文字体。
用Pentaho Report Design制作柱状图

分类柱状图

我们上面设计的柱状图每个分类里只有一个小分类,如果要显示多个分类,则需要重新设置series。
我们这里有一个字段quota,表示每个人工作的性质,现在要统计每个人每种性质的工作量。
那么首先把quota字段拖到Details区域,点击chart图表修改series-field为quota即可。
用Pentaho Report Design制作柱状图

预览效果如图:
每个人三种工作性质的工作量就已经统计出来了。
用Pentaho Report Design制作柱状图

调用函数与表达式

新建函数构造表达式

我们虽然完成了分类的柱状图的显示,但是发现工作性质类型标题栏显示的是数字123,有没有办法能够改成中文呢?
这就需要我们新增对应的函数和表达式来进行对应转换了。
右侧Data选项卡Functions - Add Function
用Pentaho Report Design制作柱状图
可以看到Pentaho提供了一些内置的函数,找到相应的函数点击新建,然后点击新建出来的函数,在下方属性中定义名称及表达式:
用Pentaho Report Design制作柱状图

相关函数的表达式可参考官网论坛:
https://wiki.pentaho.com/display/Reporting/9.+Report+Designer+Formula+Expressions

我们这里选中的是Advanced—>Open Formula(Advanced)。
Open Formula(Advanced)支持公开的自定义函数。
点击新建出来的函数FormulaFunction4,在下方属性中定义名称及表达式:
Formula为 =IF([quota]=”0”;”流程建设”;IF([quota]=”1”;”预防风险”;”提供效率”))
Initialization Formula为=[quota。
如图:
用Pentaho Report Design制作柱状图
IF([quota]=”0”;”流程建设”;IF([quota]=”1”;”预防风险”;”提供效率”))表达式使用的是逻辑表达式,通过if来判断数值对应到中文的类型。

使用函数

使用函数时直接输入函数名称替换原值即可。
比如我们上面的小分类series-by-field从quota替换为FormulaFunction4。
用Pentaho Report Design制作柱状图
则函数成功生效。series小分类成功替换成中文。
用Pentaho Report Design制作柱状图

分组

新建分组排列

我们有时候需要对数据进行分组,比如我们需要知道每个人工作平均花了多少时间,那么我们可以先按人对工作日进行分组,然后求每组里工作日的平

均值。
右侧Structure选项卡右键点击Master Report,选择Add Group即可。
用Pentaho Report Design制作柱状图
选中用来分组的字段。
用Pentaho Report Design制作柱状图

这时候左边的设计器中会出现Group Header和Group Footer。
把用来分组的字段拖入Group Header中,作为组的标题。
Datails放入工作日字段。
预览格式如下:
XXX
12
23
34
XX
12
32
45

分组成功。

求平均

新建函数Running–》Average(Running)。
选中字段,选中分组即可。
用Pentaho Report Design制作柱状图
Field Name为需要求平均的字段。
Reset on Group Name 为分组名称。
Scale为小数点位数。

分组函数的使用方式,只能放在Group Footer中才生效并准确。
因为它是在遍历时一遍计算,如果放在Dedails每行调用Avg函数,则每行显示的是计算到当前行时的数值,并不是一个最终的平均数。
只有放在Group Footer中得到的才是计算完毕一组的平均数。这个是需要注意的地方。
由于这个特性,目前也没有找到把这个计算出来的平均数正确放入图表中的方法