多样性数据源报表如何做?

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice等等,即使是关系数据库,也不止一个。与之对应的,应用中的报表自然也会涉及到多样性的数据源了现在的报表,基本都是用报表工具来做,很多报表工具都号称支持多数据源,是不是能解决这个问题呢?实际上并不能,他们只能搞定一点点

现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice等等,即使是关系数据库,也不止一个。

与之对应的,应用中的报表自然也会涉及到多样性的数据源了

现在的报表,基本都是用报表工具来做,很多报表工具都号称支持多数据源,是不是能解决这个问题呢?

实际上并不能,他们只能搞定一点点

报表工具能轻松搞定的多源数据长什么样

简单来说,来自关系数据库的多源数据都比较好搞定,不管是多表,还是多库,都很简单,用SQL把各个来源的数据都取出来,放到报表中去关联、计算、呈现就可以

imagepng

imagepng

这样的多源数据,好一点的报表工具都可以轻松应对

报表工具不好搞定的多源数据长什么样

也可以简单的说,不是单纯的关系数据库的多源数据,报表工具都不太好做

imagepng

进入大数据时代以来,不仅数据变大了,而且存储的方式也多了,除了传统的关系数据库外,还有

1.TXT/CSV、Excel、JSON/XML 等文件;
2.MongoDB、Cassandra、HBase、Redis 这些 NoSQL 数据库;
3.HDFS 等分布式文件系统;
4.webService;
5.ES、Kafka 等其他数据源形式

文件类的某些报表工具还能搞定,但也只限于读,而不会算,只能先全部读入到报表中,然后再利用报表的计算能力来计算处理,数据量大时,读取的效率和空间容量都可能会成为问题,(极个别的工具可以边读边汇总过滤,还能并行流式读取,会好很多);其它类的数据源大部分报表工具就连读都不会了,因为没有标准,每家有各自的API,想要读取,大部分都得通过JAVA自定义数据集的方式了

读取都这么费劲,而这些数据常常在业务逻辑上又有关联,做报表的时候大部分时候都会涉及到多个数据源之间的关联混算,单凭报表工具提供的多源关联能力处理起来就变得更困难

报表工具解决不了只能硬编码

虽然报表工具解决不了,但也难不倒工程师,因为工程师会编码,没有什么是编码解决不了的,

工程师可以先把异构的数据变成同构的,比如把文件的数据先导入到RDB中,由RDB计算后再给报表用,而那些不会读的,就只能再一次依靠所有报表工具都提供的所谓自定义数据原接口了用JAVA读入并处理好,再传给报表

项目中,很多困难的多源混算情况,都是这么处理的,都能搞定,但是这么做其实弊端很多

异构变同构,其实大部分时候是把不同的数据强行装入到常见关系数据库中,然后再利用SQL的方式来处理计算,这样做,首先得考虑数据库本身的管理和压力,管理上是否允许这样操作,容量是否够,每次遇到这样的库外数据都要往数据库中放?

除此之外,还有一个最重要的问题:时效。

数据的导入都需要时间,量少的耗时短可能无所谓,量大的可能进度都被耽误了,而且一般业务数据都是实时变动的,导入数据的方式也基本很难保证数据的实时性,还有些变不了或者变起来极困难的,像json/xml多层数据(mongodb也是这种),要建很多表,想变都变不了

JAVA处理的话,要好很多,不用考虑入库的一系列问题,实时性也可以保证,但是开发成本高,还会破坏应用架构

JAVA开发人员的成本本身就高,然后JAVA计算数据的能力还很弱,写起来工作量很大,简单做个求和运算都需要写数行代码的循环来实现,更别说逻辑复杂的运算了,动辄几百行的代码,一个报表还可以承受,报表一多,就承受不了这样的高成本。

另外JAVA代码需要和项目应用一起编译,也会带来报表和应用高耦合的问题,还会影响报表本身热切换的能力

有没有更好的办法

如果报表工具提供处理复杂多样性数据源的能力,那问题就可以迎刃而解了,就不需要再来回倒腾数据或者JAVA硬写了

润乾报表集成SPL集算器以后就具备了这样的能力

imagepng

SPL 是一款流行的专业的数据计算处理工具,很多项目开发商都在用,因为它不仅好用,而且还免费,开源,是常年做项目,总需要做数据处理的工程师的好帮手

集成 SPL 后,润乾报表相当于多了一个计算层,这个计算层支持常见的各类数据源,可以同时计算来自不同数据源的数据,不管它是同构还是异构

比如JSON和ORACLE混算

A
1 =json(file("/data/EO.json").read()) JSON数据
2 =A1.conj(Orders)
3 =A2.select(Amount>1000 &&Amount<=3000 && like@c(Client,"s")) 条件过滤
4 =db.query@x(“select ID,Name,Area from Client”) 数据库数据
5 =join(A3:o,Client;A4:c,ID) 关联计算

再比如MongoDB和 CSV关联运算

A
1 =mongo_open("mongodb://127.0.0.1:27017/mongo")
2 =mongo_shell(A1,"Orders.find()").fetch()
3 =file("Employee.csv").import@tc()
4 =mongo_close(A1)
5 =join(A2,SellerId;A3,EId)
6 =A5.new(_1.OrderID,_1.Client,_2.Name,_2.Gender,_2.Dept)

原本要做各种转换把数据导入到库里,或者用大段的JAVA来写,现在简单几行SPL代码就轻松搞定了

说在最后

集成了SPL的润乾报表,简单几行代码就可以搞定多样性数据源的难题,不仅让报表做起来更轻松,更是帮用户省下了大把的人工成本,而且润乾报表本身也好用,润乾一直都是报表行业的头部供应商,各行业的大小软件开发商们都有用润乾,现在的价格又很亲民,1W一套,3W一年随便用,也可以给项目上省出不少费用,有需要的可以收藏一下了

润乾报表资料

欢迎对润乾报表有兴趣的加小助手(VX号:RUNQIAN_RAQSOFT),进技术交流群

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
atlas Apache
前瞻|Amundsen的数据血缘功能
目前,Amundsen并不支持表级别和列级别的数据血缘功能,也没有办法展示数据的来龙去脉。 作为Amundsen一项非常核心的功能,Lineage功能早已经提上日程,并进入设计与研发阶段。本位将展示此功能的一些基本设计。
588 0
前瞻|Amundsen的数据血缘功能
|
数据采集 安全 网络安全
告警繁杂迷人眼,多源分析见月明
随着数字化浪潮的蓬勃兴起,网络安全问题日趋凸显,面对指数级增长的威胁和告警,传统的安全防御往往力不从心。网内业务逻辑不规范、安全设备技术不成熟都会导致安全设备触发告警。如何在海量众多安全告警中识别出真正的网络安全攻击事件成为安全运营的痛点问题。传统的分析手段,没有从威胁来源和攻击者视角来分析问题,从黑客攻击杀伤链来看,检测点和分析手段严重不足。因此需要从多源安全信息数据融合分析,实现网络攻击精准研判和处置。
134 1
|
数据采集 SQL 数据可视化
79 网站点击流数据分析案例(整体技术流程及架构)
79 网站点击流数据分析案例(整体技术流程及架构)
124 0
|
数据采集 SQL 监控
开源大数据分析实验(3)——简单用户画像分析之配置数据质量监控
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
|
BI 数据库
汇总报表怎么做,如何设计实现汇总报表?
汇总报表怎么做,如何设计实现汇总报表?
|
机器学习/深度学习 数据采集 自然语言处理
全自动化数据洞察!数据分布对比可视化!⛵
本文介绍如何使用 Pandas Profiling 的比较报告功能,分析两个数据集的分布差异,完成数据探索分析 (EDA) 的完整流程,为后续分析做准备。
313 0
全自动化数据洞察!数据分布对比可视化!⛵
|
数据挖掘
一文速览-数据分析基础以及常规流程
一文速览-数据分析基础以及常规流程
126 0
一文速览-数据分析基础以及常规流程
|
移动开发 前端开发 数据可视化
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
267 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
|
移动开发 JSON 前端开发
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
650 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
|
SQL 存储 缓存
怎样提高报表呈现的性能?
报表的性能很重要,是一个总被谈及的问题,跑的慢的报表用户体验恶劣,无法忍受。解决这些慢的性能问题,也成了项目方和工程师头疼的事情。一出状况,就得安排技术好的,能力强的工程师去救火,本来利润就薄,还得不断的追加人工成本,而且工程师有时候也无能为力,并不是所有的性能问题都能靠程序员能力解决的 这个总会让人头疼的问题没办法解决吗?没有好的方法去提升性能了吗? 解决这个问题之前,我们得先理清楚问题的根源,是什么导致了报表的性能问题,找到根源,我们才能对症下药,才能治本
152 0