EasyReport使用指南.md https://github.com/xianrendzw/EasyReport https://github.com/xianrendzw/EasyReport/tree/bigdata A simple and easy to use Web Report System for javaphp
EasyReport是一个简单易用的Web报表工具,它的主要功能是把SQL语句查询出的行列结构转换成HTML表格(Table),并支持表格的跨行(RowSpan)与跨列(ColSpan)。同时它还支持报表Excel导出、图表显示及固定表头与左边列的功能。
欢迎加入QQ群交流:(365582678)html
jdk1.8
maven3
eclipsejee-luna
tomcat7+
MySQL5+前端
首先肯定安装好jdk1.8与maven3、MySQL5+,并配置好maven仓库,而后按以下步骤操做:
step1:git clone https://github.com/xianrendzw/EasyReport.git
step2:在MySQL中建立名为easy_report的数据库,而后解压yourgitrepository/EasyReport/docs/db/mysql.zip,并执行easy_report_mysql.sql建立表结构与导入初始数据
step3:cd yourgitrepository/EasyReport/easyreport-web
step4:修改 src\main\resources${env}\resource.properties 数据库链接字符串的IP、用户与密码
step5:mvn clean package -Dskiptest=true -P${env} (${env}变量说明:dev表示开发环境,prod表示生产,test表示测试)
step6:通过step4以后会在target目录生成easyreport-web.war文件,而后把这个文件部署到tomcat,jboss,jetty等容器中java
首先肯定安装好jre1.8或jdk1.8与MySQL5+,而后按以下步骤操做:
step1:直接从release下载war文件
step2:在MySQL中建立名为easy_report的数据库,而后解压mysql.zip,并执行easy_report_mysql.sql建立表结构与导入初始数据
step3:修改war文件里WEB-INF\classes\resource.properties中数据库链接字符串的IP、用户与密码
step4:而后把war这个文件部署到tomcat,jboss,jetty等容器中mysql
有时须要把报表定时(天天、每个月,每季度等)以邮件形式发布给相关的人员,所以须要定时任务调度程序,经常使用的调度程序也不少(linux:at,crontab;windows:计划任务),本工具实现一个简单的调度程序。
**说明:**该程序是可选的,若是不须要定时把报表以邮件方式发布,则可不部署该程序。 具体安装与部署步骤以下:
step1:cd yourgitrepository/EasyReport/easyreport-scheduler
step2:修改 src\main\resources${env}\resource.properties 数据库链接,用户与密码
step3:mvn clean package -P${env} (${env}变量说明:dev表示开发环境,prod表示生产,test表示测试)
step4:通过step3以后会在target目录生成easyreport-scheduler.jar文件。而后在linux中执行以下shell命令:linux
nohup java -jar easyreport-scheduler.jar >log.log 2>&1 &
简单的说,报表就是用表格、图表等格式来动态显示数据。它是数据可视化的重要部分。尤为在当今大数据泛滥的时代,处处都须要各类各样的报表。在使用该工具以前您应该先了解一下数据仓库、维度、度量、事实表等相关概念,这将会对你制做报表有必定的帮助。git
本工具只是简单的从数据库(MySQL,Oracle,SQLServer,HBase等)中的事实表读取数据,并转换成HTML表格形式展现。不支持CUBE、钻取、切片等复杂OLAP相关的功能。github
在制做报表前须要先设置数据源,本工具只支持在单一数据源(即数据库)生成报表。web
配置管理主要于在制做报表时自动匹配一些经常使用的列名对应的中文描述。如:dt,date(日期)、title(标题)等。sql
一般,只要把数据源配置成功就能够开始报表设计了,报表设计主要分两个步骤:基本设置与查询参数设置。且必须先把基本设置保存后方可进行查询参数设置 ,查询参数设置是可选的,主要看报表设计者的意图。
报表的基本设置由4部分组成(如上图所示):报表树型列表、报表基本属性、报表SQL查询语句、报表元数据列配置。 在设计报表以前,先简单介绍几个名词,咱们从数据仓库概念了解到维度与度量这两个概念,事实上一条SQL语句查询的结果就是一张二维表格,即由行与列组成的表格,在统计分析时,咱们把有些列称为维度列,有些列称为度量列。有时事实表里有好几个维度与度量列,可是SQL查询结果只能是二维表格,它不能把维度层次化,展现方式固定而不能灵活变更,这样在观察与分析数据时多有不便,所以一些报表工具就解决了这些问题。本工具把事实表中的维度列与度量列进行再次划分以下表所示:
类型 | 子类型 |
---|---|
维度列 | 布局维度列、简称布局列 |
通常维度列、简称维度列 | |
度量列 | 统计列 |
计算列 |
布局列主要用于报表展现方式上,若是布局列为横向展现,则报表在绘制时会把布局列的内容绘制表报表表头,维度列的内容绘制报表表体的左边;若是布局列为纵向展现,则报表在绘制时会把布局列的内容绘制表报表表体的左边,维度列的内容绘制报表表头。
计算列是根据SQL查询结果中列的值再根据其配置的计算表达式动态运算出来的,它不存在于SQL语句或事实表中,其中使用的表达式引擎为aviator。
了解了上述基本知识后,咱们来看看一张报表的主要设计流程:
1.建立报表树型目录列表
2.点击1新建根节点,也能够在树列表中右键建立子节点
3.选择指定的目录,设置基本信息,如报表名称,数据源,布局与统计列展现方式
4.输入报表SQL查询语句
5.执行SQL查询语句并获取报表的列信息
6.配置报表的列
7.新增并保存基本设置信息到数据库
新增成功后,就能够双击树列表中报表名称节点或点击报表预览按钮预览报表。如以为报表展现的不够友好,能够经过修改布局列与统计列的展现方式来改变报表显示。
上图是日期为布局列且横向显示的报表预览结果。咱们能够修改一下相关配置让报表展现更直观些。
因为列名dt已经在配置管理设置了默认标题,所以在执行SQL后会自动匹配它的标题,您也能够把其余的列名增长配置管理项中,这样下次设计报表时就会自动匹配默认标题。如今看修改后报表展现。
有时候报表须要根据指定条件动态生成,如要查看不一样城市空气质量状况,这个时候,我就须要建立一个查询参数变量。 其中表单控件用于报表查询参数显示形式,主要有下拉单选框(select)、下单多选框(select mul)、复选框(checkbox)及文本框(textbox)四种。下图1处为查询参数列表。
当查询参的表单控件为下拉单选或多选时,内容来源有两种不一样的形式。
内容来源 | 内容 | 备注 |
---|---|---|
SQL语句 | select col1 as name,col2 as text from table ... | 只包含两列且列名必须为name与text,name列的值对应下拉框的value属性,text列的值对应下拉框的text属性 |
文本字符串 | name1,text1|name2,text2|... 或name1|name2|... | 多个值必须用’|’分隔,若是name与text值相同则只选择一个并用’|’分开也可 |
有些经常使用的查询参数不须要用户每次都建立,所以集成在工具内,这些参数变量称为内置变量。
有些报表的SQL语句很复杂,有时须要根据参数动态生成或须要用模板引擎(velocity)生成,所以须要一些能在模板引擎中应用的函数,这些函数称为内置函数。
1.内置变量(区分大小写)
变量名 | 说明 | 返回值说明 |
---|---|---|
startTime | 开始日期 | 2015-02-04(默认结束日期的前七天,这个能够由报表基本设置的显示天数修改) |
endTime | 结束日期 | 2015-02-10(默认为当前天) |
intStartTime | 整型开始日期 | 20150204 |
intEndTime | 整型结束日期 | 20150210 |
utcStartTime | UTC开始日期 | 2015-02-04(UTC日期,中国为UTC+8区) |
utcEndTime | UTC结束日期 | 2015-02-10(UTC日期) |
utcIntStartTime | UTC整型开始日期 | 20150204 |
utcIntEndTime | UTC整型结束日期 | 20150204 |
2.内置函数
点击报表的图示展现按钮,出现以下界面:
若是要查看多个城市也能够经过对比来显示:
若是统计列只有一列时,图表显示就能够支持二个维度同时所有展现:
示例中的全部数据来源于:pm25.in、aqistudy,若是您须要运行示例中的报表,需求在mysql中建立名为china_weather_air的数据库, 而后解压yourgitrepository/EasyReport/docs/db/mysql.zip,并执行china_weather_air_mysql.sql建立表结构与导入初始数据。
该系统整体架构图以下: