乐趣区

关于前端:如何实现一个支持分级数据统计的增强型透视图


文 / 明道云销售部参谋 文静
编辑 / 麦壁瑜

一个常见的企业需要

在企业的日常治理中,咱们常常遇到须要对工作工作或者我的项目进行成本核算的工作,比方:统计员工在不同工作上的工时投入,并且按客户、产品、部门等多个维度进行剖析。

让咱们让问题更加简单一点

如果只是简略按某个维度进行汇总,那么在明道云里设计好统计明细表,并配合相应的统计图表(饼状图、柱状体、透视图)就能够轻松实现。而咱们明天要分享的是一个绝对简单的分层统计需要:依照数据的层级构造分层进行数据统计。

例如:在将工作工作逐级分解执行后,须要再依据员工的日报逐级进行工时汇总,一项工作工作能够关联到任何一级工作。下图这个工作工时统计,就将从总任务到二级子工作的各级工作都逐级进行数据汇总。

然而目前,这样分层汇总的报表统计在明道云还无奈间接反对。难道只能找产品经理提需要吗?当然不是,明道云本身的自定义能力给咱们提供了有限的施展空间。上面咱们就来利用明道现有的根底性能,改装出一个具备分层汇总能力的增强型透视图。

将大问题拆解成小问题,逐个解决

首先明确,咱们最终须要的是一个统计数据表,并且按不同的层级进行汇总,因而在所有的报表类型中,“透视图”是最合适的。

透视图能够增加多个行统计维度,报表会把内容雷同的行维度主动进行合并展现。如果依照数据的范畴大小进行维度排序,就能够实现逐层开展的成果。如果还不太熟悉透视图,能够先参考一个蕴含行政区划的简略例子:工作表记录中每个地址都蕴含“省—市—(区)县”3 个字段,如果严格依照这个程序来设置,即可依照地区范畴的大小逐级展现。


依照省—市—县程序展现

当然,不依照特定的程序来排序也不会影响报表出现,只是无奈更好的展现数据自身的层级或者分组关系。在本文的需要中,咱们天然会抉择依照工作工作自身的层级关系来统计。

依照市—区(县)—省程序展现

确定了最终的报表出现模式,下一步就是要为报表提供数据源。通过方才对透视表的特点剖析,咱们看到目前透视表自身不具备的性能:

  • 展示模式上,要想实现具备雷同的下层数据主动合并展现,必须要让下层数据有完全相同的内容才行(工作名称 + 汇总后果)
  • 透视表尽管能够按维度合并数据,但自身无奈分层进行数据统计,因而须要咱们在数据源表中先计算好各层的汇总数据
    明确了这两个指标,下一步就要基于以后根本的性能来革新数据结构,以满足要求。

解决问题

1. 建设分层统计的数据结构(月度 / 分类汇总表)

各层有惟一的一条记录,用于累计本层工作的汇总数据。记录通过日报提交的事件主动创立即可。


2. 建设透视图的数据源表,用于分层显示的各级汇总字段

留神:这里还是须要依据业务需要确定一个最大层级,因为透视表的行维度在配置时就固定下来。

字段格局设置为“工作名称 - 本层工时汇总”,外面须要按层级别离关联上一步的分类统计数据。也就是说,每条数据除了要保留本身的工时以外,也要保留所属所有下层工作的汇总工时,并通过“文本组合”对立格局。

3. 逐层统计

一旦有新的数据提交,工作流主动依据提交所在的层级向上追溯,并将本层新增的工时累加到下层各级的汇总字段。因为这些字段曾经和统计源数据建设关联,所以能够让所有相干数据都同步更新。


当有日报减少时,通过工作流间接创立一个步骤(2)对应的工时数据汇总记录,此时该数据中只有以后日报自身的工时数,还没有建设和(1)的汇总数据关联。

而后依照层级关系逐级累加,并且将各级汇总数据关联到以后记录。在逐层累加的设计中咱们应用了 A、B 子流程循环调用的模式,子流程中封装了累加以后层级汇总数据和关联数据源表记录的逻辑。一个子流程解决实现后,只须要判断以后计算的层级是否还有下级,如有就调用另一个雷同构造的子流程 B 持续进行累加,周而复始。


实现这些配置和数据录入后,各个日报的数据里就会别离显示下面各级的汇总信息,并且实现一个加强版本的透视图成果。


最终主动累加进去的数据源表

主动生成的增强型透视图

结束语

通过一个小案例,咱们就实现了一个产品自身没有的性能,这就是明道云的魅力所在——只有把握所有根本组件的个性,在充沛剖析业务需要的根底上,咱们能够肯定水平上冲破产品自身的边界,总结一句话:

“应用明道云产品最大的艰难可能不是产品目前还没有什么性能,而是你不足想象力!”

退出移动版