欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

這篇文章將為大家詳細講解有關怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質(zhì)量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!為您提供網(wǎng)站設計、網(wǎng)站建設、成都網(wǎng)頁設計、成都小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、成都app軟件開發(fā)是成都本地專業(yè)的網(wǎng)站建設和網(wǎng)站設計公司,等你一起來見證!

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

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

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

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

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

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

應用場景:報表數(shù)據(jù)準備

應用結構

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

如何集成

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

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

1、 基礎 jar 集成

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

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

jdom.jar 解析配置文件

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

除了基礎包外,還有一些為完成特定功能的 jar 包。如,要在集算器 JDBC 用其它數(shù)據(jù)庫作為集算器的數(shù)據(jù)源,那么還需要相應數(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 下。

注意:標紅部分,不同 birt 版本略有不同

2、 配置文件集成

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

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

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

(二) Birt 應用環(huán)境

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

2、 將 raqsoftConfig. 拷貝至應用的 WEB-INF\classes 下

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

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

2、 編寫并部署 esProc 腳本

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

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

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

打開設計器,Tool—Datasource connection 新增 JDBC 方式連接

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

點 ok 保存,再點 connect 連接

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

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

File – New

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

(4) 部署腳本

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

<DB name="vertica ">
<property name="url" value="jdbc:vertica://192.168.10.10:5433/ForEsprocTestDB"/>
<property name="driver" value="com.vertica.jdbc.Driver"/>
<property name="type" value="0"/>
<property name="user" value="dbadmin"/>
<property name="password" value="runqian"/>
<property name="batchSize" value="0"/>
<property name="autoConnect" value="false"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
<property name="needTransContent" value="false"/>
<property name="needTransSentence" value="false"/>
<property name="caseSentence" value="false"/>
</DB>

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

Driver class 為”com.esproc.jdbc.InternalDriver(v1.0)”,會用到 dm.jar 等

Data URL 為”jdbc:esproc:local://"

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

新建“Data Sets”,選擇配置的集算器數(shù)據(jù)源(esProcConnection),數(shù)據(jù)集類型選擇存儲過程(SQL Stored Procedure Query)

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

Next,查詢腳本(Query-Query Text)輸入:{call VerticaExternalProcedures()}

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

其中:VerticaExternalProcedures 為 esProc 腳本文件名

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

算的過程。

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

以簡單的網(wǎng)格報表為例

報表設計如下

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

Web 發(fā)布預覽

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

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

下面看下具體的改法:

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

打開 esProc 設計器,Program – Parameter – Add

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

腳本改動:

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

注:A2 增加條件過濾

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

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

開發(fā)工具打開報表,Data Explorer – Report Parameter – new patameter

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

Default value 為 qyear 的默認值。

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

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

度,此處用占位符設置。

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

改為“2015”后

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

4、 Web 端預覽

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

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

怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

關于“怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

當前標題:怎么讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大-創(chuàng)新互聯(lián)
當前URL:http://aaarwkj.com/article24/icsje.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、服務器托管、微信小程序網(wǎng)站設計、網(wǎng)站建設外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司
热九九这里只有热九九| 91精品久久久久久| 成人高清在线观看91| 亚洲三级av在线播放| 欧美亚洲一区二区三区91| 亚洲av污精品一区二区三区| 亚洲人成网站18禁止人| 亚洲欧美综合区丁香六月| 日本啪啪精品一区二区三区| 黄色亚洲日本欧美在线观看| 亚洲精品区免费观看av| 国产高清亚洲精品视频| 青青草视频在线好好热| 青青草成人免费在线公开视频| 亚洲欧美综合伊人看片综合 | 亚洲熟女av综合网丁香| 国产精品一区二区黑人巨大| 国产日韩欧美视频在线观看| 亚洲一区精品中文字幕| 无套内谢少妇高朝毛片| 男人天堂一区二区av| 扒开少妇毛茸茸的大荫萍蒂| 欧美日韩亚洲国产一区| 亚洲成年人黄色小说网站| 亚洲中文字幕乱码一二三| av天堂资源地址在线观看| 色老头视频一区二区三区| 欧美 国产 综合 日韩| 亚洲邻家人妻一区二区| 精品嫩模福利一区二区蜜臀| 亚洲三级黄色在线观看| 亚洲精品一区久久狠狠欧美| 青青草青青草在线观看视频| 人妻的秘密一区二区三区| 色婷婷综合激情一区二区| 日韩亚洲av一区二区| 国产婷婷成人久久av免费高清| 日韩黄av在线免费观看| 欧美日韩69av网| 欧美+亚洲+精品+三区| 亚洲精品午夜久久久av|