日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用游标显示销售报表_协助报表开发之 MongoDB join mysql

發(fā)布時間:2024/9/19 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用游标显示销售报表_协助报表开发之 MongoDB join mysql 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

集算器 SPL 語言支持處理多樣性數(shù)據(jù)源,通過 SPL 對 MongoDB 集合與 MySql 表進行 join 關(guān)聯(lián),不僅簡化了對 MongoDB 數(shù)據(jù)的操作,而且有利于與其它報表工具的方便集成。若想了解更多,請前往乾學(xué)院:協(xié)助報表開發(fā)之 MongoDB join mysql!

處理多樣性數(shù)據(jù)源是報表開發(fā)的常見問題,而常見的 JasperReport 等報表工具本身卻難以應(yīng)付,比如展現(xiàn)MongoDB和mysql的混合運算。雖然JasperReport/Birt有virtual data source或table join等功能,但這些功能只在商業(yè)版或高端版本出現(xiàn),在免費版中實現(xiàn)難度很大。而且功能也有較大局限,對連接后的數(shù)據(jù)無法進行類似SQL的結(jié)構(gòu)化計算。

集算器 SPL 語言面向結(jié)構(gòu)化處理的強計算引擎,支持多樣性數(shù)據(jù)源,集成簡單,可以協(xié)助不同報表工具方便地實現(xiàn)此類需求,下面用例子說明

emp是MongoDB的集合,cities是 mysql的table,emp中的字段CityID邏輯上相當于外鍵,指向cities的CityID字段,cities有CityID和CityName這兩個字段。現(xiàn)在需要按時間段查詢出emp中的員工,并將CityID顯示為CityName。部分源數(shù)據(jù)如下:

使用集算器SPL的代碼如下:

A1: 連接 MongoDB,連接字格式為 mongo://ip:port/db?arg=value&…

A2: 使用find函數(shù)從集合emp中查詢出某時間段的記錄,取出 _id 之外的所有字段,形成游標。其中查詢條件中的 begin 和 end 是來自報表的外部參數(shù),分別表示Birthday的起始時間和終止時間。SPL游標能夠分批讀取和處理數(shù)據(jù),可以避免數(shù)據(jù)量過大,以防內(nèi)存溢出。因為數(shù)據(jù)量不大,所以這里可以直接fetch出游標的所有記錄,結(jié)果如下:

A3: 關(guān)閉 MongoDB。

A4: 執(zhí)行SQL查詢,從mysql數(shù)據(jù)源取數(shù)。其中myDB1是數(shù)據(jù)源名稱,配置界面如下:

可以看到,這里的數(shù)據(jù)源使用的就是JDBC 連接,可支持任意數(shù)據(jù)庫。JDBC 數(shù)據(jù)源可以自動連接/ 關(guān)閉,也可以像MongoDB 那樣手工連接/ 關(guān)閉,這里采用前者。

函數(shù)query使用SQL語句進行檢索查詢,結(jié)果如下:

A5: 將A2中的CityID字段替換成A4中對應(yīng)的記錄,其效果類似于左連接。替換后的A2如下(A2與A5指向同一個二維表):

點擊CityID中藍色的超鏈接,可以看到對應(yīng)的記錄:

有時需要進行內(nèi)連接,則應(yīng)當在函數(shù)swtich中使用選項@i,代碼即:A2.switch@i(CityID,A4),結(jié)果將會如下:

A6: 從連接的結(jié)果中取出需要的字段,并用函數(shù)new組成二維表。其中CityID.CityName:CityName表示從A5取出CityID字段對應(yīng)的記錄中的CityName字段,并重命名為CityName(報表工具無法識別CityID.CityName這樣的字段名)。

從上述代碼可以看出,用switch替換字段后,表之間的關(guān)聯(lián)關(guān)系就可以用對象的方式來訪問,這種方式直觀簡單,進行多表多層關(guān)聯(lián)時會體現(xiàn)得更明顯。計算結(jié)果如下:

到此為止,報表所需要的數(shù)據(jù)都計算出來了。
A7: 將 A6 中的二維表返回報表工具。

SPL對外提供JDBC接口,報表工具會將SPL識別為普通數(shù)據(jù)庫,集成方案請參考相關(guān)文檔。
接下來以JasperReport為例設(shè)計報表,表樣如下:

需要定義兩個報表參數(shù)Pbegin、Pend,分別對應(yīng)SPL中的兩個參數(shù)。預(yù)覽后可以看到報表結(jié)果:

報表調(diào)用SPL的方法和調(diào)用存儲過程一樣,此例中可以將本腳本保存為mongodbJoin2.dfx,在JasperReport的SQL設(shè)計器中可以用mongodbJoin2 $P{pbegin},$P{pend}來調(diào)用。

簡言之,SPL 從 MongoDB 獲取集合數(shù)據(jù),從 Mysql 查詢表記錄后,將它們通過 switch 函數(shù)進行替換字段,再通過函數(shù) new 按需求將數(shù)據(jù)組成序表,供其它的報表工具展示。通過 SPL 對多樣性數(shù)據(jù)源支持,按需要進行數(shù)據(jù)合并,這樣簡化了對 MongoDB 數(shù)據(jù)的操作,有利于與其它報表工具的方便集成。

總結(jié)

以上是生活随笔為你收集整理的使用游标显示销售报表_协助报表开发之 MongoDB join mysql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。