现代应用已经进入多数据源阶段。不再是单一的数据库包一统天下。一个应用会涉及到关系型数据库以外的各种数据源,比如文本文件数据、NOSQL、多维数据库、HTMLWebservices等,即使是关系型数据库,也可能有多个应用。那么应用中的报表自然会涉及到多种数据源。现在的报表基本上都是用报表工具做的。许多报告工具声称支持多个数据源。,是否可以解决这个问题?事实上,您只能处理一点点报表工具可以轻松处理的多源数据。简单地说,关系数据库的多源数据更容易处理。不管是多表还是多库,都很简单。使用SQL将各种来源的数据取出来,放到报表中,对这样的多源数据进行关联、计算、呈现。更好的报告工具可以轻松处理报告工具难以处理的多源数据。它可以像看起来一样简单。说实话,不仅仅是关系型数据库的多源数据,报表工具也不好做。进入大数据时代以来,数据不仅变得更大,而且存储方式也更多。除了传统的关系型数据库,还有1.TXT/CSV、Excel、JSON/XML等文件;2.MongoDB、Cassandra、HBase、Redis等NoSQL数据库;3.HDFS等分布式文件系统;4.网络服务;5.ES、Kafka等数据源格式文件类的一些报表工具也可以处理,但仅限于读取,不算。它们只能先读入报表,然后利用报表的计算能力进行计算和处理。当数据量很大时,读取效率和空间容量可能会成为问题。(很少有工具可以一边汇总过滤一边读取,也可以并行流读取,这样会好很多);大多数针对其他类型数据源的报告工具甚至无法读取,因为没有标准,每个公司都有自己的API。如果要看的话,大部分都得用JAVA自定义数据集。阅读起来比较费力,而且这些数据在业务逻辑上往往是相关的。很多时候在做报表的时候,会涉及到多个数据源之间的关联和混合。单靠报表工具提供的多源关联能力,处理难度更大。报表工具解决不了,只有硬编码的报表工具解决不了,但是对工程师来说并不难,因为工程师会编码,没有什么是编码解决不了的。工程师可以先将异构数据转化为同构数据,比如先将文件数据导入RDB,再给出Reports,看不懂的只能依赖所有报表工具提供的所谓自定义数据原始接口。用JAVA读取处理,然后传给报表工程。许多困难的多源混合计数情况,都是这样它可以处理你想要的任何东西,但这样做实际上有很多缺点。其实很多时候都是把不同的数据强行放到通用的关系型数据库中,然后用SQL来处理计算,首先要考虑数据库本身的管理和压力。管理层允许这种操作吗?然后你要考虑时效性。数据导入需要时间。量小时间短可能无所谓,量大可能会耽误进度。而且一般的业务数据都是实时变化的,导入数据的方式基本很难。要保证数据的实时性,还是有一些东西是不能改或者是极难改的,比如json/xml多层数据(mongodb也是这样),需要建很多表,而JAVA处理就好多了,不用考虑存储上的一系列问题,实时性也能保证,但是开发成本高,而且还会破坏应用结构。JAVA开发人员成本高,JAVA计算数据的能力还很薄弱,写起来很费工夫。简单做一个求和运算,需要写一个循环几行代码才能实现,更不用说逻辑复杂的运算了。一份几百行代码的报表,能承受得起。如果报告太多,你负担不起这么高的成本。另外JAVA代码需要和项目应用一起编译,也会造成报表和应用的高耦合问题,也会影响报表本身的热切换能力。有没有更好的办法?如果报表工具提供了处理复杂多样数据源的能力,那么问题就迎刃而解了,不需要来回折腾数据,也不需要JAVA硬写润千报表。集成SPLesProc后,你将拥有这样的能力。SPL是一种流行的专业数据计算和处理工具,很多项目开发企业都在使用它,因为它不仅简单易用,而且免费开源。对于常年做项目,总需要做数据处理的工程师来说是个好帮手。整合SPL后,润千报表相当于多了一个计算层,支持各种通用数据源,可以同时计算不同数据源的数据,不管是同构还是异构,比如JSON和ORACLE混合计算A1=json(file("/data/EO.json").read())JSON数据2=A1.conj(Orders)3=A2.select(Amount>1000&&Amount<=3000&&like@c(Client,"s"))conditionalfilter4=db.query@x("selectID,Name,AreafromClient")数据库数据5=join(A3:o,Client;A4:c,ID)关联计算又如MongoDB和CSV关联操作A1=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),进入技术交流群,欢迎关注我的公告号:字母哥杂谈,回复003并赠送作者专栏《docker修炼之道》的PDF版,30余篇优质docker文章。Antetokounmpo博客:zimug.com
