報表多樣性資料來源之MongoDB,報表多樣性mongodb

來源:互聯網
上載者:User

報表多樣性資料來源之MongoDB,報表多樣性mongodb

         MongoDB等nosql資料庫具有易擴充和高效能等優勢,但計算能力比傳統SQL要弱,例如MongoDB的分組結果不能太大,且不直接支援join運算等,而集算報表內建的計算引擎再正好可以補充這一點,在獲得MongoDB的優勢的同時還擁有較強的計算能力。

        我們通過一個分組執行個體來瞭解一下集算報表使用MongoDB資料來源開發報表的過程。

報表說明

        學產生績資訊儲存在MongoDB中,包含班級、姓名、成績、科目等資訊,成績表(score)資料內容如下:



        現根據學生資訊匯總總成績,並排名。以下為實現步驟:

準備MongoDB jdbc驅動包

         這裡使用的是最新版MongoDB2.6.4,由於集算報表並不包含MongoDB的java驅動包。用集算報表來訪問MongoDB,必須提前準備MongoDB的java驅動包(集算報表要求2.12.2或以上版本的驅動,如mongo-java-driver-2.12.2.jar)。

        由於要使用集算器編輯計算指令碼,使用集算報表設計師完成報表範本製作,所以需要將以上包放到[集算報表和集算器安裝目錄]\common\jdbc下(web部署時放到應用的classpath中)。MongoDB的java驅動包是:https://github.com/MongoDB/mongo-java-driver/releases。

編寫計算指令碼

         使用集算器編輯器編寫集算指令碼,(p1.dfx),完成表資料讀取計算,為報表返回結果集(右側為格子運行後結果)。

        A1:串連MongoDB,ip和連接埠號碼是localhost:27017,資料庫是test,使用者名稱和密碼為空白。如果需要其他參數的話可以按照mongo://ip:port/db?user=…&password=…格式繼續寫參數。

        A2:使用find函數從MongoDB中取數,形成遊標。集合是score,取出除_id外的所有欄位。可以看出find函數和MongoDB的find函數類似。集算器的遊標是分批讀取和處理資料,可以避免資料量過大,記憶體出現溢出的情況。

        A3:關閉串連。

        A4:按照id欄位分組。

        A5:匯總總成績。

        A6:按總成績排名,為報表返回結果集。

編輯報表範本

        首先在集算報表設計師中建立報表,設定資料集,使用“集算器”資料集類型,調用編輯好的指令檔(p1.dfx)。

        其中,dfx檔案路徑既可以是絕對路徑,也可以是相對路徑,相對路徑是相對選項中配置的dfx主目錄的。

 

        編輯報表運算式,直接使用集算指令碼返回的結果集,不再在報表中分組排序,完成報表製作

        在設計器中預覽報表,可得到如下結果:

        通過上面的實現可以看到,使用集算器指令碼可以方便地完成MongoDB資料讀取計算,而且外置的集算指令碼具有可視化的編輯調試環境,編輯好的指令碼還可以複用(被其他報表或程式調用)。不過,如果指令碼已經調試好,而且不需要複用的時候,要維護兩個檔案(集算指令碼和報表範本)的一致性會比較麻煩,這時候直接使用集算報表的指令碼資料集就比較簡單了。

       在指令碼資料集中可以分步編寫指令碼完成計算任務,文法與集算器一致,還可以直接使用報表定義好的參數。使用指令碼資料集可以這樣完成:

        1、在資料集設定視窗中點擊“增加”按鈕,彈出資料集類型對話方塊,選擇“指令碼資料集”;

        2、在彈出的指令碼資料集編輯視窗中編寫指令碼;

        3、報表運算式,與使用集算器資料集一致,不再贅述。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.