如何轻松实现多源混算报表

报表作为综合业务,数据来源多种多样。传统实现多源混合查询报表要通过 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;并在高温下将铁液倒入模具中进行铸造。在铸造过程中…