如何輕松實現多源混算報表

報表作為綜合業務,數據來源多種多樣。傳統實現多源混合查詢報表要通過 ETL 將數據同庫,但這種方式數據時效性太差使用場景受限。通過邏輯數倉能獲得較強的數據實時性,但體系又過于沉重,為報表業務搭建邏輯數倉有點得不償失。需要一種更為簡單輕量的多源報表實現方式。

SPL 能很好解決這個問題。作為輕量級計算引擎,SPL 具備天然多源混算能力,可以嵌入到報表中快速實現多源混算報表。

SPL 之所以具備天然混算能力,除了豐富的多樣性數據源支持,更重要的是所有數據源接入后都會轉換成統一數據對象:序表或游標,任何數據源只要能訪問到就能混算。

目前主流報表工具潤乾報表已經集成了 SPL,可以直接獲得多源混合查詢能力。

..

SPL 為多源計算設計了兩種 Connector,最常見的 RDB,文本、Excel、JSON 等本地文件,以及 HTTP 數據源等屬于原生 Connector 內置在 SPL 核心體系中。而對于一些沒那么常用的數據源,像 MongoDB、Kafka、ES 這些,SPL 基于數據源的原生接口進行了簡單封裝,以外部 Connector 的形式提供,用到時單獨引入即可。采用這種輕封裝(相對邏輯數倉要深度定制開發)的模式可以讓報表對數據源的支持更容易擴展,同時還能保留數據源的原生語法充分發揮數據源自身的能力。

比如,在實際的電商業務中,MySQL 存儲訂單相關信息。同時,由于商品信息會根據類型動態變化,比如電子產品有品牌、型號和規格,而服裝則包括品牌、尺寸和顏色,因此使用 MongoDB 來存儲商品信息。

現在基于訂單銷售統計報表,查詢指定時間段內不同類型('Tablets', 'Wearables', 'Audio')、品牌、商品的銷售總額,這需要跨 MySQL 和 MongoDB 混合查詢。

..

先通過 SPL 做跨庫查詢準備數據,編寫 MySQL+Mongo.splx 腳本:

A
1=connect("mysql")
2

=A1.query@x ("SELECT o.order_id, o.user_id, o.order_date, oi.product_id, oi.quantity, oi.price

FROM orders o JOIN order_items oi ON o.order_id = oi.order_id

WHERE o.order_date>=? and o.order_date<=?",begin,end)

3=mongo_open("mongodb://127.0.0.1:27017/raqdb")
4

=mongo_shell@d(A3,

"{'find':'products',

'filter': {

'category': {'$in': ['Tablets', 'Wearables', 'Audio'] }

}}”

)

5=A2.join@i(product_id,A4:product_id,name,brand,category,attributes)
6=A5.groups(category,brand,name;sum(price*quantity):amount)
7return ifn(A6,create(category,brand,name,amount))

先連接 MySQL 并查詢指定時間段的數據,begin 和 end 是報表中傳遞過來的參數,需要在腳本中增加相應的參數設置:

..

然后讀取 MongoDB 數據,這里的語法都是 MongoDB 原生語法(在 Mongoshell 中可以直接執行)。

最后兩部分數據進行關聯計算并分組匯總返回計算結果。

接下來設計報表展現模板。報表模板開發時需要先在潤乾報表中需要配置 MySQL 數據連接:

..

MongoDB 要先引入外部庫,在選項中選擇外部庫目錄:

..

所有外部庫接口到這下載: 集算器 (SPL) 最新版發布啦『發布日期 20250605』

然后勾選 MongoDB 就可以了:

..

上面這些配置都是一次性的。

因為 SPL 已經內置到潤乾報表中,開發報表模板的時候選擇數據集為“集算器”,然后指定 SPL 腳本即可。

..

指定腳本并傳遞參數:

..

整個過程報表模板很簡單,主要還是 SPL 完成數據混算部分。數據源都是直連混算,不涉及數據搬遷,也不需要做邏輯映射,任何數據源只要連上就能混算。比如 Kafka 和 MongoDB 混算也是類似的:

A
1=kafka_open("/mafia/my.properties","topic-order")
2=kafka_poll(A1)
3=json(A2.value)
4=mongo_open("mongodb://127.0.0.1:27017/raqdb")
5=mongo_shell@d(A4,"{'find':'products'}")
6=A3.join(product_id,A5:product_id,product_id,name,brand,category,attributes)
7return A6.select(category== arg_category)

不僅是小數據,大數據也能輕松支持。前面 MySQL 和 MongoDB 混算如果數據量比較大可以這樣混算:

A
1=connect("mysql")
2

=A1.cursor@x ("SELECT o.order_id, o.user_id, o.order_date, oi.product_id, oi.quantity, oi.price

FROM orders o JOIN order_items oi ON o.order_id = oi.order_id

WHERE o.order_date>=? and o.order_date<=?

ORDER BY oi.product_id ASC ",begin,end)

3=mongo_open("mongodb://127.0.0.1:27017/raqdb")
4=mongo_shell@dc(A3,"{'find':'products','filter': {},'sort': {'product_id': 1}}")
5=joinx(A2:o,product_id;A4:p,product_id)
6=A5.groups(category,brand,name;sum(price*quantity):amount)
7return ifn(A6,create(category,brand,name,amount))

A2 和 A4 的數據查詢都改成游標分批加載數據,然后進行游標關聯,最后進行分組匯總并返回結果。這里匯總后的結果集已經不大了,所以直接全部返回;如果結果集比較大,SPL 腳本可以直接返回游標,潤乾報表提供了大報表功能可以直接基于游標分批呈現數據(具體參考論壇資料),因此可以滿足任意數據源任意數據規模的報表查詢。

具備如此強大多源混算能力的潤乾報表只要極低成本就可以永久使用:一萬一套,三萬買斷

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909309.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker|簡單入門

文章目錄 Docker簡介Docker和虛擬機的聯系和區別基本原理和概念鏡像容器倉庫 Docker安裝配置容器化和Dockerfile實踐環節Docker Compose Docker簡介 Docker是一個用于構建build、運行run、傳送share應用程序的平臺&#xff0c;可以把應用程序打包成一個個的集裝箱&#xff0c;…

阿里云云原生數據庫PolarDB和普通云數據庫的區別?

文章目錄 前言一、云數據庫的演進&#xff1a;從“托管”到“原生”的跨越二、PolarDB的核心創新&#xff1a;重新定義云數據庫的能力邊界1. 存算分離架構&#xff1a;打破資源綁定的“枷鎖”2. 多模引擎與兼容生態&#xff1a;降低應用遷移成本3. 智能化運維&#xff1a;讓數據…

SNN學習(4):真實的生物神經學中神經元和人腦結構學習

目錄 一、基礎知識 1 簡單神經元回路中的信號運作 2 高級功能相關的復雜神經元回路 3 細胞體、樹突和軸突 3.1 神經元細胞 3.2 非神經元細胞 3.3 神經膠質細胞 3.4 神經細胞的信號傳遞 3.4.1 動作電位的特性 3.4.2 興奮和抑制 3.4.3 電傳遞 二、大腦皮層及視覺系統…

第六天 界面操作及美化(6.1 建立菜單及異步調用)

6.1 建立菜單及異步調用 在程序中&#xff0c;菜單&#xff08;Menu&#xff09;是一種常見的用戶界面元素&#xff0c;在程序中起到了組織功能、提高用戶體驗、提供快捷方式和幫助文檔等重要作用。通過合理使用菜單&#xff0c;可以使程序的功能更加清晰、操作更加便捷&#…

論文解析:一文弄懂ResNet(圖像識別分類、目標檢測)

目錄 一、相關資源 二、Motivation 三、技術細節 1.殘差學習過程 2.快捷連接類型 (1)Identity Shortcuts&#xff08;恒等捷徑&#xff09; (2)Projection Shortcuts&#xff08;投影捷徑&#xff09; (3)兩種捷徑對比 3.深層瓶頸結構Deeper Bottleneck Architectures…

動態規劃算法的歡樂密碼(二):路徑問題

專欄&#xff1a;算法的魔法世界 個人主頁&#xff1a;手握風云 一、例題講解 1.1. 不同路徑 題目要求是計算從網格的左上角&#xff08;起點&#xff09;到右下角&#xff08;終點&#xff09;的所有不同路徑的數量。機器人每次只能向下或向右移動一步。如下圖所示&#xff0…

嵌入式相關開源項目、庫、資料------持續更新中

嵌入式相關開源項目、庫、資料------持續更新中 學習初期最難找的就是找學習資料了&#xff0c;本貼精心匯總了一些嵌入式相關資源&#xff0c;包括但不限于編程語言、單片機、開源項目、物聯網、操作系統、Linux、計算機等資源&#xff0c;并且在不斷地更新中&#xff0c;致力…

圖像處理與機器學習項目:特征提取、PCA與分類器評估

圖像處理與機器學習項目:特征提取、PCA與分類器評估 項目概述 本項目將完成一個完整的圖像處理與機器學習流程,包括數據探索、特征提取、主成分分析(PCA)、分類器實現和評估五個關鍵步驟。我們將使用Python的OpenCV、scikit-learn和scikit-image庫來處理圖像數據并實現機器…

MATLAB | 如何使用MATLAB獲取《Nature》全部繪圖 (附23-25年圖像)

文末有全部圖片資源 我在兩年前更過如何用 MATLAB 爬取 《Nature》全部插圖&#xff0c;最近又有人問我有沒有下載好的24&#xff0c;25年插圖的壓縮包&#xff0c;于是又去拿代碼運行了一下&#xff0c;發現兩年前寫的代碼今天居然還能用&#xff0c;代碼如下&#xff1a; f…

中國老年健康調查(CLHLS)數據挖掘教程(1)--CLHLS簡介和數據下載

北京大學“中國老年健康影響因素跟蹤調查&#xff08;簡稱‘中國老年健康調查’&#xff1b;英文名稱為Chinese Longitudinal Healthy Longevity Survey (CLHLS)&#xff09;”及交叉學科研究由國家自然科學基金委主任基金應急項目、重大項目、重點項目及國際合作項目。1998-20…

基本多線程編譯make命令

背景&#xff1a; 在ffmpeg源碼編譯的時候要等很久&#xff0c;快下班了&#xff0c;等不及。 解決方法&#xff1a; 使用多線程編譯。 make -j{n} 如&#xff1a; make -j8詳解&#xff1a;&#xff08;沒時間看的可以返回了&#xff01;&#xff09; 在編譯 FFmpeg 時使用…

MNIST數據集上樸素貝葉斯分類器(MATLAB例)

MNIST數據集上樸素貝葉斯分類器 Naive Bayes Classification fitcnb Train multiclass naive Bayes model Syntax Mdl fitcnb(Tbl,ResponseVarName) Mdl fitcnb(Tbl,formula) Mdl fitcnb(Tbl,Y) Mdl fitcnb(X,Y) Mdl fitcnb(___,Name,Value) [Mdl,AggregateOptimization…

網站設計小技巧:利用交互設計提升用戶體驗

現在很多企業朋友都會感覺到&#xff0c;做網站設計掌握不好設計網頁的魂&#xff0c;換了很多設計方式可能效果都不理想。蒙特網站專注高端網站建設20多年&#xff0c;基于為華為、字節跳動、海康威視等頭部企業打造網站的經驗&#xff0c;今天將近期用戶比較喜歡的網頁設計方…

Github指南-Add .gitignore和Choose a license

Add .gitignore&#xff08;添加忽略文件列表&#xff09; &#x1f4cc; 作用&#xff1a; .gitignore 文件用于告訴 Git 哪些文件或文件夾**不要被上傳&#xff08;版本控制&#xff09;**&#xff0c;例如&#xff1a; 編譯生成的臨時文件&#xff08;如 .exe, .o&#x…

如何打造沉浸式文件操作體驗

在操作系統長期運行后&#xff0c;本地文件系統往往會面臨一個常見卻棘手的問題&#xff1a;元數據管理效率下降&#xff0c;導致用戶在海量文件中檢索目標內容時出現顯著的延遲與操作成本。這種現象在未使用標簽化或語義化管理系統的情況下尤為明顯。 而 Oversis 的出現&…

企業AI深水區突圍:從星辰大海到腳下泥濘的進化論

一、業務價值旅程&#xff1a;從降本增效到價值躍遷 1.1 技術落地的"甜蜜陷阱" 企業在AI應用初期往往陷入"高配用不起&#xff0c;低配用不了"的困境。一臺8卡A100服務器每月電費超3萬元的成本&#xff0c;對制造業利潤形成巨大擠壓。即便跨過算力門檻&a…

PostgreSQL的擴展moddatetime

PostgreSQL的擴展moddatetime moddatetime 是 PostgreSQL 的一個內置擴展&#xff0c;用于自動維護表的最后修改時間字段。這個擴展可以自動更新指定字段為當前時間戳&#xff0c;非常適合需要跟蹤記錄最后修改時間的應用場景。 一、moddatetime 基本功能 核心特性 自動更新…

自己的電腦搭建外網訪問網站服務器的步驟

文章目錄 PC電腦做網站服務器的步驟1.前言2. 網站服務器系統的安裝2.1個人電腦安裝IIS&#xff08;Windows7系統安裝IIS7.0&#xff09;2.1.1&#xff1a;打開控制面板&#xff0c;給Windows安裝插件 2.2網站配置&#xff1a;2.2.1打開網站配置項&#xff1a;2.2.2開始配置&…

基于深度學習的智能語音合成系統:技術與實踐

前言 隨著人工智能技術的飛速發展&#xff0c;智能語音合成&#xff08;Text-to-Speech, TTS&#xff09;技術已經成為人機交互領域的重要組成部分。從智能助手到有聲讀物&#xff0c;語音合成技術正在改變我們與數字內容的交互方式。近年來&#xff0c;深度學習技術為語音合成…

鑄鐵平臺的制造工藝復雜而精細

鑄鐵平臺的制造工藝確實復雜而精細。首先&#xff0c;需要選擇合適的鑄鐵材料&#xff0c;通常是灰鑄鐵或球墨鑄鐵&#xff0c;以滿足平臺的強度和耐磨性要求。然后&#xff0c;根據設計要求&#xff0c;制作模具&#xff0c;并在高溫下將鐵液倒入模具中進行鑄造。在鑄造過程中…