我们知道,报表开发主要有两个阶段。 第一阶段:数据准备。将原始数据加工成报表需要的结果集(数据源); 第二阶段:数据呈现。根据已准备的结果集(数据源)编写表达式将数据以表格或图形方式呈现。
这两个阶段虽然处于同一报表开发过程,但实现方式却大不相同。
通常原始数据距离报表“能用”还相去甚远,通过 SQL/JAVA/ 存储过程等编码方式准备报表可用的数据源是第一阶段的目标,过程中可能涉及复杂的数据处理过程,因而这个阶段会牵扯较多的精力,占用的工作量也多。
数据源准备好后,通过报表工具来解决数据以何种方式(图表)、何种样式(外观)呈现的问题,通过点选设置、编写少量表达式就可以快速完成,实现简单,占用的工作量也少。
可以说,报表开发的工作量主要在数据处理(计算),数据处理后如何呈现,通过工具可以快速完成。
那是不是报表呈现阶段就不涉及数据处理了呢? 并不完全是这样。
早期报表开发 大概 2015 年以前,报表呈现方式主要以表格(或图表混合)为主,这时通过报表工具实现时就会涉及一定的数据计算,如分组汇总、多源分片、格间计算(同比环比)等。如下图所示:
计算分布在数据准备和数据呈现两个阶段,两个阶段的工作量相当(各占 50%)。这个时期,数据准备阶段可以把数据准备得“粗糙”一些,然后利用报表工具的计算能力在呈现阶段将数据进一步加工成目标结果进行呈现。比如,我们在数据准备阶段完成关联过滤,再在报表呈现模板中按多个维度分组汇总;或者在呈现模板中计算同比环比。
当前报表开发 随着报表工具的逐渐成熟,报表工具提供了更丰富的图形(类型和效果),报表选择图形呈现几乎与表格占比相当了(占比仍在增长)
使用图形呈现,由于没有“格子”,就无法利用报表工具的计算能力在呈现模板中完成数据处理,而图形本身并不具备计算能力(不包括硬编码),这时自然而然就要在数据准备阶段将前端需要的数据完全准备好,前端工具接收数据直接图形呈现。 图形设置基本没什么工作量,而后端数据源的准备工作就占了大头,数据呈现和数据准备所占的工作量占比约为 20%:80%。
当前报表开发的工作量主要在数据源端(数据准备阶段),要提升报表开发效率,势必要解决报表数据源准备效率问题。这也是为什么很多时候用上了一流的报表工具,但报表开发的工作量仍然很大的原因。
如何提升报表数据源端的开发效率,从而整体降低报表开发工作量?
借鉴报表开发的发展历史,或许可以获得一些思路。 早期,报表开发靠完全硬编码,无论数据准备还是报表呈现,后来报表工具出现替代了硬编码方式,将报表呈现阶段的开发工具化,解放了报表呈现阶段的人力(你可以感受一下写代码画报表比用工具做麻烦多少)。
按照这个思路,用工具替代硬编码就可以提高生产效率,将数据准备阶段工具化就可以解决报表数据源的开发效率,从而进一步提升报表整体开发效率。
数据准备工具可以是独立的,也可以包含在报表工具内部,后者要求报表工具的能力能够延伸到数据源层面。在选择报表工具时,不妨多考察一下工具的数据处理能力。
参考资料:【数据蒋堂】第 10 期:报表的数据计算层如何应对报表开发中的复杂逻辑