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建立表結構與導入初始數據。
該系統整體架構圖以下: