数据蒋堂 | 报表开发的现状

2018 年 2 月 23 日 数据派THU

作者:蒋步星

来源:数据蒋堂

本文共1692字,建议阅读5分钟。
通过本文为大家解读报表开发难点重点和现状问题。



报表开发,看起来只是数据呈现环节的事务,并不起眼,但仔细想想,它涉及的工作范围却非常广。如果把查询和交互分析也认为是报表事务的话(呈现形式本来也是报表),那么可以说,绝大多数ETL都是在为报表准备数据而存在的;而且,在数据库中的表,有相当多(经常超过半数)也不是用来存放原始数据,而是为了报表服务的。


不过,有许多程序员对报表开发过程还有些理解误区。对此,我们用三句话来概括报表开发的现状:


报表任务没完没了


在开发应用系统时经常会发现,交易模块已上线很久,而报表模块却迟迟不能结束,总是有新的报表需求源源不断地冒出来。如果开发组在承接项目中仅仅把报表当成应用系统的一个模块而不明确限定其需求范围的话,那通常会死得很难看。


确实,报表天然就具有业务不稳定性。交易系统中常常涉及很复杂的业务规则,随意修改规则可能产生系统的逻辑漏洞,导致数据的不一致,因此,交易系统的规则不会轻易改变。而报表则不同,它只是读取数据,增加更多的报表并不会造成数据的混乱,业务人员在应用过程中想到的新统计需求就会很随意地被提出来,这就造成了报表任务的没完没了。


这是个常态,不要试图规避或消灭它,而要想办法去适应它,也就是建立低成本高效率的应对机制。


自助报表并不管用


既然报表任务天然没完没了,那能不能通过自助报表解决,让业务人员自己去做报表呢?这样报表模块也算是被做完了。


几乎所有的敏捷BI产品都会这么宣称,能够让业务人员简单拖拽就能做出自己想要的报表,也确实有许多用户被这些宣传口号吸引了。


但是,不幸的是,自助报表并不管用,大概只能解决10%-20%的报表开发需求。


这个原因在于:大多数自助报表功能只能针对单一数据集(就是所谓的CUBE了)工作,在某个数据集上进行的汇总统计、查询过滤、排序等动作都没有问题,而需求一旦超出这个数据集的范围后,就无能为力了,又需要技术人员协助去制造新的数据集。有个别功能较强的自助报表产品能够支持多数据集的关联操作,一方面业务人员难以理解(关系数据库的JOIN运算很难懂,我们在前面已有论述),实际上没法用;另一方面即使这样也仍然不够,大概也就能再提高10%的解决比例。实际业务中提出来的报表需求,大比例都要经过多步运算并涉及多数据集混合运算后才能实现,这种报表就只能程序人员通过编码来完成了。


零编码制作报表只是一句口号


那么,使用报表工具是否能够低成本快速地开发呢?报表工具厂商常常会喊零编码制作报表,这是真的吗?


报表工具经过十多年的发展,确实基本上已经能做到零编码制作了。开发人员可以用工具可视地画出报表式样,再填写一些计算公式把数据与单元格绑定,虽然有些公式也还较为复杂,但毕竟比写程序代码要轻松得多了。而且,由于模板化之后,不再有与应用程序耦合在一起的程序代码,报表也更易于维护修改。


不过,这个便利能力只在呈现环节有意义。而完整的报表开发并不只有呈现,还有复杂的数据准备工作,这就是报表工具无能为力的环节了。从这个意义上讲,报表开发的完整过程仍然无法做到零编码。而且,当前报表的呈现格式在向简单化图形化方向发展,报表工具只是在减轻本来已经在变少的工作量,而相对来讲,数据源准备工作量的占比反而变得更大。


有许多报表工具现在也支持一些数据源的再处理,特别是能做多数据源的报表,这样,确实较多的报表可以直接使用报表工具完成。但剩下的那小部分复杂数据集的报表占用的工作量却要大很多,这是报表开发中心的二八原则,复杂报表在数据量只占二成,但占用工作量却占到八成。项目常常被少数复杂报表给拖累,开发周期非常长。



从上面的讨论,其实已经可以看出当前报表开发的重点已经转移;对此,我们还是三句话来总结:


成熟的报表工具已经能解决呈现环节的问题,如前已述,呈现环节基本上可以零编码实现;报表开发的困难主要是在数据源上,这是目前还没有被普遍工具化的环节,是开发工作的点;大多数性能问题也是数据源造成的或者需要由数据源来解决,性能是报表的老大难问题,看起来是报表环节表现出来的问题,但绝大多数是数据源环节的问题。


数据源环境才是当前报表开发的关键点,而且好的数据源处理机制还能优化报表业务的应用结构,这个问题我们在以往的文章中已经有过阐述。


专栏作者简介

润乾软件创始人、首席科学家


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


数据蒋堂

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


往期回顾:

数据蒋堂 | JOIN延伸 - 维度概念

数据蒋堂 | JOIN提速 - 有序归并

数据蒋堂 | JOIN提速 - 外键指针的衍生

数据蒋堂 | JOIN提速 - 外键指针化

数据蒋堂 | JOIN简化 - 意义总结

数据蒋堂 | JOIN简化-消除关联

数据蒋堂 | JOIN简化 - 维度对齐

数据蒋堂 | JOIN运算剖析

数据蒋堂 | 迭代聚合语法

数据蒋堂 | 非常规聚合

数据蒋堂 | 再谈有序分组

数据蒋堂 | 有序分组

数据蒋堂 | 非等值分组

数据蒋堂 | 还原分组运算的本意

数据蒋堂 | 有序遍历语法

数据蒋堂 | 常规遍历语法

数据蒋堂 | 从SQL语法看离散性

数据蒋堂 | 从SQL语法看集合化

数据蒋堂 | SQL用作大数据计算语法好吗?

数据蒋堂 | SQL的困难源于关系代数

数据蒋堂 | SQL像英语是个善意的错误

数据蒋堂 | 开放的计算能力为数据库瘦身

数据蒋堂 | 计算封闭性导致臃肿的数据库

数据蒋堂 | 怎样看待存储过程的移植困难

数据蒋堂 | 存储过程的利之弊

数据蒋堂 | 不要对自助BI期望过高

数据蒋堂 | 报表的数据计算层

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

数据蒋堂 | 列式存储的另一面

数据蒋堂 | 硬盘的性能特征

数据蒋堂 | 我们需要怎样的OLAP?

数据蒋堂 | 1T数据到底有多大?

数据蒋堂 | 索引的本质是排序

数据蒋堂 | 功夫都在报表外--漫谈报表性能优化

数据蒋堂 | 非结构化数据分析是忽悠?

数据蒋堂 | 多维分析的后台性能优化手段

数据蒋堂 | JOIN延伸 - 维度查询语法

数据蒋堂 | 文件的性能分析

数据蒋堂 | RDB与NoSQL的访问性能


校对:谭佳瑶


为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错

若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包

同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。

感谢一直以来您的关注和支持,希望您能够监督数据派产出更加高质的内容。

登录查看更多
0

相关内容

数据集,又称为资料集、数据集合或资料集合,是一种由数据所组成的集合。
Data set(或dataset)是一个数据的集合,通常以表格形式出现。每一列代表一个特定变量。每一行都对应于某一成员的数据集的问题。它列出的价值观为每一个变量,如身高和体重的一个物体或价值的随机数。每个数值被称为数据资料。对应于行数,该数据集的数据可能包括一个或多个成员。
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
专知会员服务
123+阅读 · 2020年3月26日
数据标注研究综述,软件学报,19页pdf
专知会员服务
89+阅读 · 2020年2月20日
Gartner 报告:人工智能的现状与未来
InfoQ
14+阅读 · 2019年11月29日
【数字化】2019年全球数字化转型现状研究报告
产业智能官
29+阅读 · 2019年7月8日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
金融风控面试十二问
七月在线实验室
20+阅读 · 2019年4月9日
企业数据AI化战略:从数据中台到AI中台
36大数据
11+阅读 · 2019年2月18日
【大数据】大数据参考架构和关键技术(综合)
产业智能官
14+阅读 · 2018年11月22日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
7+阅读 · 2018年1月30日
VIP会员
相关VIP内容
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
专知会员服务
123+阅读 · 2020年3月26日
数据标注研究综述,软件学报,19页pdf
专知会员服务
89+阅读 · 2020年2月20日
相关资讯
Gartner 报告:人工智能的现状与未来
InfoQ
14+阅读 · 2019年11月29日
【数字化】2019年全球数字化转型现状研究报告
产业智能官
29+阅读 · 2019年7月8日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
金融风控面试十二问
七月在线实验室
20+阅读 · 2019年4月9日
企业数据AI化战略:从数据中台到AI中台
36大数据
11+阅读 · 2019年2月18日
【大数据】大数据参考架构和关键技术(综合)
产业智能官
14+阅读 · 2018年11月22日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
五步帮你实现用户画像的数据加工
云栖社区
6+阅读 · 2018年2月4日
Top
微信扫码咨询专知VIP会员