简介:QBE引擎是一个通过自定义表、字段及查询条件的形式来生成图表或者报表的工具。它是通过可视化配置的形式来自定义SQL,此时的SQL是隐式的。
要使用QBE引擎需要先定义数据表的表结构和说明。下边以一个订单汇总表为例进行介绍。
假设订单汇总表表结构如下:
图8-1
订单汇总表包括订单所属部门,平台,订单的日期,金额,数量等字段。
1. 创建该表的java bean类和hibernate配置文件
例如:
图8-2
和
图8-3
此步骤可以通过myeclipse或者jboss hibernate tools自动生成。
2. 创建对该表字段的描述文件
例如:
这里既有对表的描述也有对表中字段的描述。其中:XXXX.label为表或字段标签名,XXXX.tooltip为表或者字段的帮助文字,或者对字段含义的说明文字。
3. 创建对该表字段配置文件
例如:
图8-5
其中XXXX.visible为表或字段是否可见,XXXX.type为表或字段的类型(dimension一般指表,attribute一般指表中的字段),XXXX.position是指表或字段展示位置。是否可视和展示位置用于在设计器中显示使用。
以上三步完成后,如下图:
图8-6
然后将代码和配置文件打包为datamart.jar(必须为此文件名)并放置到
Tomcat_home\resources\qbe\datamarts\XXXX\下。
配置如下图:
图8-7
其中引擎必须选为qbeEngine,在datamart Model类型下。
这时选择的数据源必须定义了方言:
图8-8
这时也可以在document中定义查询参数。Document的模板文件如下:
图8-9
DATAMART name="wansindw"定义的是datamart.jar文件所在的目录名称
Tomcat_home\resources\qbe\datamarts\ wansindw \
Table定义的是表的java bean类名全路径。Filter中定义的是过滤条件。其中p{}中的内容必须与document中定义参数的url相一致。
Document定义完成后如果没有定义参数的话,执行document后会打开如下页面:
图8-10
如果左侧树中显示了定义的数据表名称则说明配置成功,否则请仔细检查以上步骤是否配置正确。
设计器页面中包含四个tab。分别是:
查询,定义查询语句功能。
结果,展示查询语句的执行结果。
工作表设计,定义工作表。
工作表预览,预览定义的工作表。
在查询页面中包含两大区域:
图解:展示已定义的数据表及表结构内容。
查询编辑器:查询语句的定义页面。
查询编辑器页面包含三部分:
选择字段:选择需要查询语句的字段。
过滤条件子句:定义查询语句的where条件子句。
Having子句:定义查询语句的having条件子句。
假设我们要按照日期汇总订单数量功能,则需要做以下步骤:
1. 选择订单数量、订单日期字段,并拖动到选择字段区域
图8-11
2. 定义订单数量的操作方式为sum,订单日期的操作方式为分组和排序,如下图:
图8-12
3. 如果需要其他过滤条件,可以在过滤条件子句中增加条件,如下图:
图8-13
4. Having子句也可以定义如下:
图8-14
以上步骤完成后可以点击右上角的执行按钮查看查询结果:
图8-15
执行后会自动打开结果页面。某一个查询语句定义完成后也可以保存下来,以供下次查询时快速打开,点击右上角保存按钮保存:
图8-16
输入保存名称等信息:
图8-17
查询语句定义完成后接着定义工作表,打开工作表设计tab,如下图:
图8-18
刚进入页面时左上角的选择字段区域是空的,这时只需要点击选择字段后边的刷新按钮,自定义的查询语句中的字段就会显示出来了。
在这个页面中我们可以定义多种报表或者图表,包括柱状图、饼状图、曲线图,table和类型olap的pivot列表。
假设我们想定义一个曲线图,这时需要断则曲线图图标-line chart,并拖动到右侧大片空白区域。然后拖动选择字段栏中的两个字段到曲线图中的横纵坐标上。注意,曲线图的纵坐标必须是可以计算的数值型。如下图:
图8-19
这时也可以选择曲线图的样式,曲线颜色等配置。
这一步骤完成后点击上方的“工作表预览”tab就可以看到曲线图的实际内容了,如下图:
图8-20
在工作表中我们可以定义多个工作表,这些个工作表类似excel的sheet。在工作表设计页面的下方点击
图8-21
加号增加工作表。
这样工作表就设计完成后。如果以后想快速的访问这个工作表,可以点击上方的保存图标(图8-16),填写相关信息
图8-22
后就可以在选择的目录下创建一个WorkSheet引擎的document了。这样直接点击这个自动创建的document就可以快速访问工作表了。
自定义工作表建议:
1. 工作表使用的数据表尽量只有一个表,避免关联多表,减轻系统负担。
2. 自定义工作表功能还较弱,不能实现较复杂的报表只适合简单图表的定义。