写点什么

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

作者:明道云
  • 2022 年 3 月 28 日
  • 本文字数:1711 字

    阅读完需:约 6 分钟

文/明道云销售部顾问 文静编辑/麦壁瑜

一个常见的企业需求

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

让我们让问题更加复杂一点

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

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

然而目前,这样分层汇总的报表统计在明道云还无法直接支持。难道只能找产品经理提需求吗?当然不是,明道云自身的自定义能力给我们提供了无限的发挥空间。下面我们就来利用明道现有的基础功能,改装出一个具备分层汇总能力的增强型透视图。

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

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

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

按照省—市—县顺序展示

当然,不按照特定的顺序来排序也不会影响报表呈现,只是无法更好的展示数据本身的层级或者分组关系。在本文的需求中,我们自然会选择按照工作任务本身的层级关系来统计。

按照市—区(县)—省顺序展示

确定了最终的报表呈现形式,下一步就是要为报表提供数据源。通过刚才对透视表的特点分析,我们看到目前透视表本身不具备的功能:

  • 展现形式上,要想实现具备相同的上层数据自动合并展示,必须要让上层数据有完全相同的内容才行(任务名称+汇总结果)

  • 透视表虽然可以按维度合并数据,但本身无法分层进行数据统计,因此需要我们在数据源表中先计算好各层的汇总数据

明确了这两个目标,下一步就要基于当前基本的功能来改造数据结构,以满足要求。

解决问题

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

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

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

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

字段格式设置为“任务名称-本层工时汇总”,里面需要按层级分别关联上一步的分类统计数据。也就是说,每条数据除了要保存自身的工时以外,也要保存所属所有上层任务的汇总工时,并通过“文本组合”统一格式。

3.逐层统计

一旦有新的数据提交,工作流自动根据提交所在的层级向上追溯,并将本层新增的工时累加到上层各级的汇总字段。由于这些字段已经和统计源数据建立关联,所以可以让所有相关数据都同步更新。

当有日报增加时,通过工作流直接创建一个步骤(2)对应的工时数据汇总记录,此时该数据中只有当前日报本身的工时数,还没有建立和(1)的汇总数据关联。

然后按照层级关系逐级累加,并且将各级汇总数据关联到当前记录。在逐层累加的设计中我们使用了 A、B 子流程循环调用的模式,子流程中封装了累加当前层级汇总数据和关联数据源表记录的逻辑。一个子流程处理完成后,只需要判断当前计算的层级是否还有上级,如有就调用另一个相同结构的子流程 B 继续进行累加,循环往复。

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

最终自动累加出来的数据源表

自动生成的增强型透视图

结束语

通过一个小案例,我们就实现了一个产品本身没有的功能,这就是明道云的魅力所在——只要掌握所有基本组件的特性,在充分分析业务需求的基础上,我们可以一定程度上突破产品本身的边界,总结一句话:

“使用明道云产品最大的困难可能不是产品目前还没有什么功能,而是你缺乏想象力!”

用户头像

明道云

关注

还未添加个人签名 2020.07.13 加入

明道云(www.mingdao.com)是一个帮助企业快速搭建个性化业务应用的APaaS平台

评论

发布
暂无评论
如何实现一个支持分级数据统计的增强型透视图_明道云_InfoQ写作平台