真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大-創(chuàng)新互聯(lián)

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

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

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的郊區(qū)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

with A as
(selectCUSTOM,SALESAMOUNT,row_number() over (order by SALESAMOUNT) RANKING
from SALES)
select CUSTOM,SALESAMOUNT
from (select CUSTOM,SALESAMOUNT,sum(SALESAMOUNT) over (order by RANKING) AccumulativeAmount
from A)
where AccumulativeAmount>(select sum(SALESAMOUNT)/2 from SALES)
order by SALESAMOUNT descwith A as
(selectCUSTOM,SALESAMOUNT,row_number() over (order by SALESAMOUNT) RANKING
from 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

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

下面是用集算器實(shí)現(xiàn)相同邏輯的代碼:
讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大
從上述代碼我們可以看到,集算器利用一套簡(jiǎn)潔的語(yǔ)法取代了需嵌套 SQL+ 窗口函數(shù)才能實(shí)現(xiàn)的邏輯,并且具有通用一致性(任何數(shù)據(jù)源代碼一致)。

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

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

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

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

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

如何集成

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

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

1、 基礎(chǔ) jar 集成

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

dm.jar 集算器計(jì)算引擎及JDBC驅(qū)動(dòng)包
jdom.jar 解析配置文件
icu4j\_3\_4_5.jar 處理國(guó)際化dm.jar 集算器計(jì)算引擎及JDBC驅(qū)動(dòng)包jdom.jar 解析配置文件icu4j\_3\_4_5.jar 處理國(guó)際化

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

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

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

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

2、 配置文件集成

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

可在 [esProc 安裝目錄](méi)\esProc\config 下找到,需復(fù)制后放置在類路徑下,同樣將其拷貝至 Birt 開(kāi)發(fā)環(huán)境 [安裝目錄](méi)\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.xml 拷貝至應(yīng)用的 WEB-INF\classes 下

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

1、 Vertica 內(nèi) Sales 表字段及數(shù)據(jù)說(shuō)明(通過(guò) vsql 查詢,本測(cè)試庫(kù)有 2013/14/15 年數(shù)據(jù))
讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大
2、 編寫(xiě)并部署 esProc 腳本

(1) esProc 設(shè)計(jì)器添加 vertica JDBC 驅(qū)動(dòng)包

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

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

打開(kāi)設(shè)計(jì)器,Tool—Datasource connection 新增 JDBC 方式連接

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

點(diǎn) ok 保存,再點(diǎn) connect 連接

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

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

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

File – New

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

(4) 部署腳本

將腳本文件部署到 raqsoftConfig.xml 配置的腳本文件主目錄下。

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

3、 esProc 配置文件 raqsoftConfig.xml 內(nèi)增加 verticaLink 數(shù)據(jù)源連接配置














4、 Birt 開(kāi)發(fā)工具內(nèi)新建報(bào)表,并增加 esProc 數(shù)據(jù)源“esProcConnection”

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

Driver class 為”com.esproc.jdbc.InternalDriver(v1.0)”,會(huì)用到 dm.jar 等
Database URL 為”jdbc:esproc:local://”

5、 Birt 調(diào)用 Vertica 外部存儲(chǔ)過(guò)程(esProc 數(shù)據(jù)集)

新建“Data Sets”,選擇配置的集算器數(shù)據(jù)源(esProcConnection),數(shù)據(jù)集類型選擇存儲(chǔ)過(guò)程(SQL Stored Procedure Query)
讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大
Next,查詢腳本(Query-Query Text)輸入:{call VerticaExternalProcedures()}

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

其中:VerticaExternalProcedures 為 esProc 腳本文件名

Finish,預(yù)覽數(shù)據(jù)(Preview Results)

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

此時(shí),便看到了把 esProc 腳本作為 Vertica 外部存儲(chǔ)過(guò)程取數(shù)輔助計(jì)

算的過(guò)程。

6、 Birt Web 端呈現(xiàn)

以簡(jiǎn)單的網(wǎng)格報(bào)表為例

報(bào)表設(shè)計(jì)如下

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

Web 發(fā)布預(yù)覽

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

例二:參數(shù)調(diào)用

這里把“找出訂單銷售額占到一半的前 n 個(gè)客戶,并按銷售額從大到小排序”,改為要求按年查詢,即“按年度查詢訂單銷售額占到一半的前 n 個(gè)客戶,并按銷售額從大到小排序”,因此增加了參數(shù)過(guò)濾功能。

下面看下具體的改法:

1、 esProc 腳本增加按年度參數(shù)及過(guò)濾功能

打開(kāi) esProc 設(shè)計(jì)器,Program – Parameter – Add

參數(shù)名為“qyear”(可與報(bào)表參數(shù)名不同)

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

腳本改動(dòng):

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

注:A2 增加條件過(guò)濾

2、 報(bào)表內(nèi)增加年度參數(shù)

報(bào)表增加按年查詢的入口參數(shù),參數(shù)名為“qyear”

開(kāi)發(fā)工具打開(kāi)報(bào)表,Data Explorer – Report Parameter – new patameter

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

Default value 為 qyear 的默認(rèn)值。

3、 報(bào)表數(shù)據(jù)集增加數(shù)據(jù)集參數(shù)并與報(bào)表參數(shù)綁定

Data set 內(nèi)編輯 VerticaExternalProcedures 數(shù)據(jù)集

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

Query Text 改為“{call VerticaExternalProcedures(?)}”,? 為入口參數(shù)年

度,此處用占位符設(shè)置。

選 Parameters,增加數(shù)據(jù)集參數(shù) qyear 并與報(bào)表參數(shù) qyear 綁定。

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

Preview Results, 這里根據(jù) qyear 默認(rèn)值僅有查詢 2013 年數(shù)據(jù)

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

改為“2015”后

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

4、 Web 端預(yù)覽

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

查詢“2015”年數(shù)據(jù)

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

修改或 url 傳入 qyear 為“2013”年后

讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大

更多 "birt 整合方案" 詳見(jiàn):http://c.raqsoft.com.cn/tag/Report

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)題目:讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://weahome.cn/article/ddpehs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部