开发报表是数据分析师必备技能之一,目前市场上,绝大部分的数据分析师的工作时间都是用来做报表。报表是维持公司正常生产运营重要的一部分,企业的业务发展状况、财务状况等等都需要通过报表来监测。
然而很多企业的数据分析师或者报表工程师在报表开发的过程中总遇到这样的问题:每天接需求,接需求,费尽心血做了一堆的报表,但是感觉没什么用。有的报表改了又改,业务总是不满意,最后好不容易改好了,功劳还都是业务部门的,自己还要被业务套上能力不行的帽子。
为什么做出来的报表总被说没用?怎么样才能做出令人满意的报表呢?结合我将近10年的从业经验,给大家一些建议,希望能够帮助到大家。
报表开发要以人为本
做报表其实就相当于做产品,我们目的是要让用户(业务、领导)满意,愿意看,愿意用,所以报表好不好不是开发人员觉得好就好,而是要从看报表的人出发,用户觉得好才好。因此我们在开发报表的过程中要以人为本,搞清楚报表的目标用户(给谁看),用户需求(他想看什么)。
对于基层业务人员,他们的报表需求大多都是数据查询,比如查看订单数据,任务完成进度等等,注重报表的实用性,因此,这类的报表不需要有太多的分析思想,要操作简单,针对性强。
对于中层业务管理人员,他们既要向领导汇报,又要向下安排具体工作,因此高层领导知道的,中层领导也必须掌握,并且对问题还要有深入的分析,所以,这类的报表除了数据指标的展现外还要带有简单的数据分析和不同维度的查询
对于高层领导,他们没有太多的时间去深入研究报表的细节,更多的需求是一目了然看到核心数据,因此这类的报表要简洁明了,直接体现结果,并且提供联动钻取等简单的操作发现数据背后的问题,然后让下属去分析汇报。
不同的报表查看人群决定了报表设计风格的不同,有些公司的业务部门会有专门的人负责对接报表需求,需求由他统一对接,但是他本人并不一定是报表的直接使用者,所以我们在沟通需求的过程中,要尽量获取报表直接使用人的具体信息,甚至想办法获取第一手的报表使用者的直接需求。
挖掘业务需求
业务经常吐槽开发做出来的报表没用,为什么没用?需求是你提的,你要啥我给啥,按照你的要求做出来的你还说没用,不讲道理啊。于是很多报表开发者把报表做的不好的原因归结于业务不会提需求。
这确实是个问题,业务人员提报表需求有两种情况,一种是出于眼前业务的需要,或者是领导的要求,为了完成任务,需求非常片面,而且他提的报表需求也不一定能解决实际面临的问题,还有一种情况是,业务有想要的东西,但是不知道该怎么提需求,提出来的需求可能和他想要的不一致,这就导致需求改了又改,都达不到他们心中所想。
因此,这就需要我们报表开发者发挥主观能动性去挖掘业务需求,毕竟做报表我们才是专业的,利用我们的专业知识引导业务,帮助业务完善需求,而不是简单的确认需求。
举个例子,省公司业务人员提得报表只关注地市维度,但实际县市级纬度也需要,但业务在需求中没有提,如果你只简单按照需求实现了这张表,地市人员会发现没有县市维度,他们又会提一个县市维度的报表,本来一张表就能解决的事情就衍生成了几十张报表,苦的还是开发人员。
化繁为简,做好报表管理
企业的数据是日积月累的,报表需求也是绵延不绝,因此企业积累的报表也越来越多,但是其实大部分报表的最终宿命都是躺在系统里没人看,真正有用的只有一小部分。
为什么我们总是有无穷尽的报表要做?本质上就是因为报表本身其实就是展现纬度和指标,企业的不同层级的人员对于指标展现的需求不同,于是就通过纬度和指标组合生成更加复杂的指标,进而导致了各式各样的报表展现需求。
但实际上,我们仔细研究每个部门提出的需求,发现有大量的内容都是重复的,以零售业举例子,看起来满天飞的报表需求,其实都是围绕着这几个主题转:销售、库存、采购、物流、会员、商品,只不过是通过不同的纬度来看其中的指标。
所以,面对无穷尽的报表需求,我们要对报表做好分类。上面提供了三种分类的纬度,一种是从目标用户纬度分类,一种是从销售、财务等业务主题纬度分类,还有一种是按照报表的功能纬度分类。个人建议按照报表功能纬度进行划分,用另外两个维度进行描述。比如:
数据查询类报表
涉及业务模块:销售、库存
报表名:实时指标查询;用户群:店长(中层)、品类经理(中层)
将报表分类清晰之后,我们就会发现在同一个报表类型、业务模块下面,可能会有多个报表,这些报表的分析目的可能是一致的,实际上就可以进行压缩合并。比如在库存业务模块下面的查询报表有部门库存分析表,库存结构分析表(还分部门、品牌、单品三个纬度)缺货断货统计表等等
上面这几个表的目的是了解商品库存情况,剩余库存结构,从而管理好库存或执行商品促销策略。这三张表完全就可以放在一张报表中,更好的办法还可以采用图表结合的形式来展示。
这样一压缩,很多需求就不攻而破了,即方便了业务人员的查看,也方便进行报表管理,减轻制表压力,一举两得。
利用高效的开发工具
做好报表除了报表内容对业务胃口之外,需求完成效率也是评价报表开发好坏的因素之一。因此,选用高效率的报表开发工具,对报表开发的过程也十分重要。
报表开发一般有以下几种方式:
一是用Excel内置的图表做一些常规的统计图,一些高级的动态图表,参数联动筛选等可以通过写VBA来实现,这种方式是很多企业最初的做法,但是时间久了弊端就出现了,数据量越来越大,Excel难以支撑,报表打开卡顿;数据收集麻烦,而且不能打通各个系统中的数据
还有就是用通过R、Python一类的数据分析语言,调用图表功能包,呈现可视化的数据,数据分析常用。或者借助Echarts、HighCharts、D3.js等开源的可视化插件,嵌入代码,开发成插件包,可视化工程师和前端开发常用。
再有就是使用现成的开源报表工具如JasperReport
、OpenReport,但会遇到一些难题,如:打印报表;复杂的数据计算;复杂格式的报表展示;页面、打印、导出word、pdf、excel格式一致性等等,而且后期的报表维护很苦难,需求一改就写大量的代码
还有一个简单的办法就是用商业报表工具,比如水晶报表、FineReport,个人比较推荐FineReport
,报表设计过程方便,支持多种数据源链接,三种报表模式覆盖明细/分组/交叉/分页/分栏树报表、可视化dashboard、大屏、复杂中国式大聚合报表等,基本能满足绝大部分的报表需求
懂数据,懂业务
在之前写数据分析的文章里,我经常提到做数据分析必须要懂业务,做报表也一样,很多报表开发者工作2年之后就会觉得自己能力难以成长了,能掌握的报表知识和系统知识基本都掌握了,不知道还能从哪些方面再进步,这时候业务知识的掌握往往就成为了报表人能力的分水岭。借用之前看过的一篇文章中的一个例子:
比如移动通信中有离网这个指标,很多业务人员认为离网就是简单的一个指标,但在系统中,离网包含主动销户、账户欠费销户等更多的含义,离网的业务流程系统实现其实非常复杂,每类离网实际表达了不同的业务含义。
业务流程的制定往往是几代业务人员积淀下来的成果,极少数业务人员能理解的很透彻,但系统中则完整的记录了下来,作为报表开发者,你应该成为这个知识的传承者,才能够作出一张超越业务人员的报表。
网友评论