在報表專案中,報表資料來源常常會來自於多種異構資料來源,例如:關係型資料庫(oracle、db2、mysql)、nosql 資料庫(mongodb)、http 資料來源、hadoop(hive、hdfs),甚至是 excel 或者文字檔案。針對這類情況,通常的做法是採用 etl 工具,將這些資料來源都同步到資料倉儲中再進行計算。不過這種做法存在以下問題:
1、配置複雜,難度較大;
2、成本較高;
3、資料無法實時訪問,時間延遲較長;
4、資料倉儲的建設和管理都比較複雜;
5、如果資料量很大效率會很低,而且要不斷的 etl 各個應用系統的同步資料;
6、資料倉儲利用的也是傳統資料庫的技術,負載增大的時候需要用較高的成本進行擴容。
和這種傳統做法相比,採用潤幹報表可以簡單直接地實現混合資料來源報表,具體做法是通過內建的集算引擎直接讀取各種混合資料來源,讓資料採用最合適的方式儲存,最終以較小的成本呈現基於混合資料來源的實時報表。etl 方式和潤幹報表方式在體系結構上的對比如下圖所示:
下面,通過《州銷售人員銷售報表》的設計製作來看一下具體的實現步驟。報表如下圖:
報表的銷售資料來自於銷售系統的 mongodb 資料庫,銷售員的資訊則來自人力資源系統的 db2 資料庫。採用潤幹報表的混合資料來源方式,報表資料來源不需要定期同步,不會有時間上的延遲。
第一步,在集算器設計器中編寫指令碼,並儲存為 statesales.dfx,指令碼內容如下:
**說明:
a1:連線預先配置好的 db22 資料來源。
a2:執行 sql,從表 employee 取數,引數 state=「california」。
a3、a4:從銷售系統的 mongodb 讀取 collection orders。
a5:使用集算器的 switch 函式,將 a4 中的 sellerid 字段切換成 a2 中的記錄,關聯條件為 sellerid=eid。@i 選項是指如果找不到對應的記錄,則刪除該行。
a6:生成乙個新的序表,得到需要的字段。
a7、a8:關閉資料庫連線。
a9:返回給集算報表。
第二,在報表設計器中定義引數 state,配置集算資料集:
第三,設計報表如下:
執行報表,輸入引數計算後,即可得到前面希望的報表。報表上部的查詢介面是潤幹報表自動提供的「引數模板」功能。引數模板和 db2、mongodb 資料來源配置的具體做法參見教程和其他文件,這裡不再贅述。
需要說明的是,如果資料來源型別發生了變化,只需進行小幅改動即可使報表生效。比如新上線的銷售系統採用了 oracle 資料庫,只要修改 statesales.dfx 的 a1 改為:
hrdb=connect(「ora」)同時複製 oracle jdbc 驅動、配置 oracle 資料庫的連線引數即可。
WPF Silverlight 資料來源繫結方式
wpf oneway 使用 oneway 繫結時,每當源發生變化,資料就會從源流向目標。onetime 繫結也會將資料從源傳送到目標 但是,僅當啟動了應用程式或 datacontext 發生更改時才會如此操作,因此,它不會偵聽源中的更改通知。onewaytosource 繫結會將資料從目標傳送到源。...
C DataGridView繫結資料來源的方法
winform控制項資料繫結有兩種形式 簡單資料繫結和複雜資料繫結 簡單資料繫結 簡單的資料繫結是將使用者控制項的某乙個屬性繫結至某乙個型別例項上的某一屬性。採用如下形式進行繫結 引用控制項.databindings.add 控制項屬性 例項物件,屬性名 true using sqlconnecti...
三大資料庫訪問其他資料來源(異構)的方法
1.microsoft sql server mssql通過linked server訪問其他資料來源中的資料,主要是利用ole的方式,即使用各自的ole provider連線到excel,access,oracle等。注意 訪問oracle中的表時表名等需要大寫 配置及使用方法參見 2.oracl...