国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > 文庫 > 正文

如何讓Birt報表腳本數(shù)據(jù)源變得既簡單又強(qiáng)大

2020-10-29 21:46:29
字體:
供稿:網(wǎng)友

概述:運(yùn)行在 JVM 上的 SQL 函數(shù)和存儲過程

總所周知,有些數(shù)據(jù)庫沒有強(qiáng)大的分析函數(shù)(eg. Mysql), 有些數(shù)據(jù)庫沒有存儲過程(eg. Vertica),當(dāng)遇到復(fù)雜的數(shù)據(jù)計算,往往只能通過 Python,R 等外部腳本來實現(xiàn),但這些腳本語言和主流工程語言(Java)集成性不好,如果直接用工程語言實現(xiàn)類似 SQL 函數(shù)和存儲過程的功能,經(jīng)常只是針對某個計算需求編寫冗長的代碼,代碼幾乎不可復(fù)用。

另外,即便擁有強(qiáng)大的分析函數(shù),實現(xiàn)稍復(fù)雜的邏輯其實也不算容易,比如下面這種常見的業(yè)務(wù)計算,找出“銷售額占到一半的前 n 個客戶,并按銷售額從大到小排序”,在 Oracle 中 SQL 實現(xiàn)如下:

with A as(selectCUSTOM,SALESAMOUNT,row_number() over (order by SALESAMOUNT) RANKINGfrom SALES)select CUSTOM,SALESAMOUNTfrom (select CUSTOM,SALESAMOUNT,sum(SALESAMOUNT) over (order by RANKING) AccumulativeAmountfrom A)where AccumulativeAmount>(select sum(SALESAMOUNT)/2 from SALES)order by SALESAMOUNT desc

說明:按照銷售額累計值從小到大排序,通過累計值大于“一半銷售額”的條件,逆向找出占到銷售額一半的客戶。為了避免窗口函數(shù)在計算累計值時對銷售額相同的值處理出現(xiàn)錯誤,用子查詢先計算了排名。

下面是用集算器實現(xiàn)相同邏輯的代碼:

從上述代碼我們可以看到,集算器利用一套簡潔的語法取代了需嵌套 SQL+ 窗口函數(shù)才能實現(xiàn)的邏輯,并且具有通用一致性(任何數(shù)據(jù)源代碼一致)。

集算器是一套運(yùn)行在 JVM 上專門處理結(jié)構(gòu)化數(shù)據(jù)的腳本語言,類似用 SQL 函數(shù)和存儲過程,與 Java 集成可以創(chuàng)建可移植、功能強(qiáng)大和與數(shù)據(jù)庫無關(guān)的計算邏輯,運(yùn)行于中間層的計算邏輯和運(yùn)行于數(shù)據(jù)庫層的數(shù)據(jù)邏輯之間的分離,提高了應(yīng)用程序的可擴(kuò)展性、靈活性和可維護(hù)性。

應(yīng)用場景:報表數(shù)據(jù)準(zhǔn)備

應(yīng)用結(jié)構(gòu)

集成后,集算器嵌入報表應(yīng)用層,相當(dāng)于本地的邏輯數(shù)據(jù)庫(不需要單獨服務(wù)器部署),在報表與數(shù)據(jù)源間作為報表數(shù)據(jù)準(zhǔn)備層,完成各種復(fù)雜的計算任務(wù)。

如何集成

下面以 Vertica 為數(shù)據(jù)源,Birt 為報表工具,描述怎樣集成 esProc 作為數(shù)據(jù)準(zhǔn)備層。

(一) Birt 開發(fā)環(huán)境

1、 基礎(chǔ) jar 集成

集算器 JDBC 需要三個基礎(chǔ) jar 包,都可以在 [esProc 安裝目錄]/esProc/lib 目錄下找到,分別為:

dm.jar 集算器計算引擎及JDBC驅(qū)動包

jdom.jar 解析配置文件

icu4j/_3/_4_5.jar 處理國際化

除了基礎(chǔ)包外,還有一些為完成特定功能的 jar 包。如,要在集算器 JDBC 用其它數(shù)據(jù)庫作為集算器的數(shù)據(jù)源,那么還需要相應(yīng)數(shù)據(jù)庫的驅(qū)動 jar 包,本文涉及到 vertica,所以要同時增加其 JDBC 驅(qū)動包(以 vertica9.1。0 為例)

vertica-jdbc-9.1.0-0.jar vertica 官網(wǎng)即可下載

獲取到以上 Jar 后,將其拷貝至 Birt 開發(fā)環(huán)境 [安裝目錄]/plugins/org.eclipse.birt.report.data.oda.jdbc_4.6.0.v20160607212 下。

注意:標(biāo)紅部分,不同 birt 版本略有不同

2、 配置文件集成

raqsoftConfig. ,主要包含集算器授權(quán)、腳本文件路徑、其他作為集算器數(shù)據(jù)源的連接配置等。

可在 [esProc 安裝目錄]/esProc/config 下找到,需復(fù)制后放置在類路徑下,同樣將其拷貝至 Birt 開發(fā)環(huán)境 [安裝目錄]/plugins/org.eclipse.birt.report.data.oda.jdbc_4.6.0.v20160607212 下。

注意:配置文件名不能改變

(二) Birt 應(yīng)用環(huán)境

1、 將(一)中的所有 jar 拷貝至應(yīng)用的 WEB-INF/lib 下

2、 將 raqsoftConfig. 拷貝至應(yīng)用的 WEB-INF/classes 下

例一:常規(guī)調(diào)用

1、 Vertica 內(nèi) Sales 表字段及數(shù)據(jù)說明(通過 vsql 查詢,本測試庫有 2013/14/15 年數(shù)據(jù))

2、 編寫并部署 esProc 腳本

(1) esProc 設(shè)計器添加 vertica JDBC 驅(qū)動包

vertica 官網(wǎng)下載 jdbc 驅(qū)動包(如,vertica-jdbc-9.1.0-0.jar),放至【esProc 安裝目錄】/common/jdbc 下

(2) 新增 vertica 數(shù)據(jù)源

打開設(shè)計器,Tool―Datasource connection 新增 JDBC 方式連接

點 ok 保存,再點 connect 連接

數(shù)據(jù)源名稱變?yōu)榉凵幢硎具B接成功。

(3) 編寫算法腳本 (文件:VerticaExternalProcedures.dfx)

File

主站蜘蛛池模板: 通山县| 榆社县| 威宁| 康保县| 界首市| 文化| 达孜县| 化德县| 醴陵市| 莱西市| 西平县| 新平| 东海县| 景泰县| 福清市| 保亭| 海林市| 延边| 大连市| 始兴县| 建瓯市| 乐平市| 静海县| 泾阳县| 禹州市| 隆尧县| 河源市| 河东区| 绵阳市| 乐都县| 绥中县| 高青县| 微山县| 师宗县| 岚皋县| 岑溪市| 岳西县| 新营市| 章丘市| 河北区| 宿州市|