【数据蒋堂】报表应用的三层结构

简介:
640?wx_fmt=png&wxfrom=5&wx_lazy=1


在传统的报表应用结构中,报表工具一般都是与数据源直接连接,并没有一个中间的数据计算层。确实,大部分情况下的报表开发并不需要这一层,相关的数据计算在数据源和呈现环节分别处理就够了。不过,在开发过程中,我们发现,有一部分报表的计算既不适合在数据源也不适合在呈现环节实现,这类报表在数量上并不占多数,但耗用的开发工作量占比却很大。


有过程的计算


报表工具都可以完成计算列、分组排序等运算,有些报表工具还提供了跨行组运算和相对格与集合的引用方案,可以完成颇为复杂的运算。


不过,报表工具中的运算是一种状态式的计算,也就是把所有计算表达式写在报表布局中,根据依赖关系自动处理计算次序。这种方法很直观,在依赖关系不太复杂时能一目了然地了解各单元格的运算目标。但是,在依赖关系较为复杂,数据准备计算需要分成多步时,状态式计算就困难了。如果一定要在报表中实施过程式计算,常常需要借用隐藏格,而隐藏格不仅将破坏状态式运算的直观性,还会占用更多不必要的内存。


比如要列出销售额占前一半的大客户,如果不借助数据准备环节,就要在报表中使用隐藏行列手段将不该列出来的条目隐藏,而不能直接过滤掉。再比如带明细的分组报表要按汇总值排序,需要先分组后排序,许多报表工具无法控制这个次序。


还有个典型例子是舍位平衡,明细值四舍五入后再合计,可能会与合计值的四舍五入值不相等,会造成报表上明细与合计数值不一致,需要根据合计的舍入值倒推明细的舍入值,这种计算的逻辑并不复杂,但即便用了隐藏格也难以由报表工具完成。


多样性数据源


与多年前的单一数据源不同,现在有许多报表的数据源并不只来源于关系数据库,还可能是NoSQL数据库、本地文件、从WEB上传来的数据等。这些非关系数据库的数据源缺乏标准的数据获取接口和语法,有些甚至没有最基本的过滤能力。而计算报表时总还要进行一些过滤甚至关联运算,虽然报表工具一般都能提供这些计算能力,但由于都是内存计算,只适合于数据量较小的情况,数据量较大时就会导致容量负担过重。而且,大多数报表工具也不能很好地处理像json或XML这种多层数据,也没有灵活编码能力以登录远程WEB服务获取数据。


动态数据源也是常见的需求,报表工具使用的数据源一般是事先配置好的,不能根据参数动态选择,直接使用报表工具无法实现。报表被用于通用查询时,取数用的SQL不能简单地用参数控制条件,而经常可能要替换某个子句,有些报表工具支持宏替换,能够一定程度地解决这个问题,但根据参数计算宏值也是个有条件和过程的运算,直接在报表工具中很难完成。


性能优化问题


我们在往期的文章中曾谈到过,大多数情况的报表性能问题都需要在数据准备阶段来解决,其中有许多场景都不能在数据源内部处理。比如并行取数本来就是解决数据源IO性能问题,只能在数据源外部实现;可控缓存需要在外存写入缓存信息,也不能在数据源内部处理;清单列表中的异步数据缓存和按页取数的功能,都不是数据源本身提供的能力;即使可以在数据源环节处理的多数据集关联问题,在多数据库或非数据的场景、以及希望减轻数据库负担时,仍然需要在数据源外部解决。这些无法在数据源内部处理的场景,显然也无法在报表环节处理。


数据计算层


如果把传统报表应用结构的两层改成三层,增加一个中间的数据计算层,这些问题就容易解决了。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


上述的各种运算都可以在数据计算层实现,报表工具只解决呈现问题以及少量适合状态式的直观计算即可。


其实,传统报表应用结构虽然没有刻意强调数据计算层,但仍然有这一层,只是比较隐蔽。典型的实现手段就是使用数据源中的存储过程或者在应用中使用报表工具的自定义数据源接口。存储过程能够解决一些过程式计算和性能优化问题,但它只能应用于单个数据库中,相当于在数据源内部的处理,对于必须在数据源外处理的场景无能为力,有较大的局限性。自定义数据源则在理论上可以解决上述所有问题,而且几乎所有报表工具都提供有这个接口,所以这种方式的应用更为广泛。


那么,使用报表工具的自定义数据源是否就可以方便地实现数据计算层呢?我们将在下一期讨论。



专栏作者简介

蒋步星,润乾软件创始人、首席科学家

清华大学计算机硕士,著有《非线性报表模型原理》等,1989年,中国首个国际奥林匹克数学竞赛团体冠军成员,个人金牌;2000年,创立润乾公司;2004年,首次在润乾报表中提出非线性报表模型,完美解决了中国式复杂报表制表难题,目前该模型已经成为报表行业的标准;2014年,经过7年开发,润乾软件发布不依赖关系代数模型的计算引擎——集算器,有效地提高了复杂结构化大数据计算的开发和运算效率;2015年,润乾软件被福布斯中文网站评为“2015福布斯中国非上市潜力企业100强”;2016年,荣获中国电子信息产业发展研究院评选的“2016年中国软件和信息服务业十大领军人物”;2017年, 自主创新研发新一代的数据仓库、云数据库等产品即将面世。


数据蒋堂

《数据蒋堂》的作者蒋步星,从事信息系统建设和数据处理长达20多年的时间。他丰富的工程经验与深厚的理论功底相互融合、创新思想与传统观念的相互碰撞,虚拟与现实的相互交织,产生出了一篇篇的沥血之作。此连载的内容涉及从数据呈现、采集到加工计算再到存储以及挖掘等各个方面。大可观数据世界之远景、小可看技术疑难之细节。针对数据领域一些技术难点,站在研发人员的角度从浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己的思考和理解。蒋步星还会对大数据的发展,站在业内专家角度给予预测和推断。静下心来认真研读你会发现,《数据蒋堂》的文章,有的会让用户避免重复前人走过的弯路,有的会让攻城狮面对扎心的难题茅塞顿开,有的会为初入行业的读者提供一把开启数据世界的钥匙,有的甚至会让业内专家大跌眼镜,产生思想交锋。


原文发布时间为:2017-06-03

本文作者:蒋步星

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
11月前
|
存储 数据可视化 测试技术
「数据架构」数据流程图示例-订餐系统
「数据架构」数据流程图示例-订餐系统
|
11月前
|
BI 数据库
汇总报表怎么做,如何设计实现汇总报表?
汇总报表怎么做,如何设计实现汇总报表?
|
数据可视化 数据挖掘 大数据
好用的报表工具推荐(报表工具功能)
在这个大数据时代,大数据计算机已成为数据分析人员必备的工具,熟悉数据分析,并从数据快速抽取出经营问题,快速响应市场,才能让数据成为第一生产力。
好用的报表工具推荐(报表工具功能)
|
存储 BI 数据处理
聊一聊数据应用中的数据集市
今天我们聊聊什么是数据集市(DM)?什么时候需要数据集市?
聊一聊数据应用中的数据集市
|
SQL XML JSON
多样性数据源报表如何做?
现代应用已经进入多数据源阶段了,不再是一个单一的数据库包打天下,一个应用中会涉及除关系数据库外各种数据源,如文本文件类数据、NOSQL、多维数据库、HTML Webservice等等,即使是关系数据库,也不止一个。 与之对应的,应用中的报表自然也会涉及到多样性的数据源了 现在的报表,基本都是用报表工具来做,很多报表工具都号称支持多数据源,是不是能解决这个问题呢? 实际上并不能,他们只能搞定一点点
175 0
多样性数据源报表如何做?
|
移动开发 前端开发 数据可视化
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
202 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(1)
|
移动开发 JSON 前端开发
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
504 0
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?(2)
|
分布式计算 监控 搜索推荐
五步帮你实现用户画像的数据加工
企业最终的数据往往都隐藏在日志背后,如果从日志背后挖掘出有价值的信息,勾画出平台或网站的用户画像对精准化运营有着重要的帮助。阿里云技术专家祎休带来阿里在处理日志、构建数仓上的最佳实践分享。主要从数仓开发开始谈起,重点讲解了数据加工用户画像的五大步骤,最后进行了演示解析。
6874 0