当前位置: 首页 > Web前端 > HTML

如何实现支持分层数据统计的增强视角

时间:2023-03-29 12:15:21 HTML

文/编辑文静/明道云销售部顾问/麦碧玉一个企业的常见需求在企业的日常管理中,我们经常会遇到需要调整工作任务或项目的情况执行成本核算任务,例如:统计员工在不同任务上投入的工时,并从客户、产品、部门等多维度进行分析。让我们把问题复杂一点。如果只是简单的按某个维度进行汇总,在明道云中设计一个统计细分,并搭配相应的统计图表(饼图、柱状图、透视图),就可以轻松实现。今天要分享的是一个比较复杂的分层统计需求:按照数据的分层结构进行数据统计。例如:工作任务逐级分解执行后,需要根据员工日报逐级汇总工时。工作任务可以与任何级别的任务相关联。下图中的任务工时统计汇总了从总任务到二级子任务的各级任务数据。但是,目前明道云无法直接支持这种分层汇总的报表统计。只能让产品经理提需求吗?当然不是,明道云的自定义能力为我们提供了无限的发展空间。接下来,我们利用明道现有的基础功能,修改一个具有分层汇总能力的增强透视图。把大问题分解成小问题,一个一个解决。首先,我们需要的是一个统计数据表,并分层次汇总。因此,在所有报表类型中,“透视图表”是最合适的。透视图可以添加多个行统计维度,报表会自动合并显示内容相同的行维度。如果按照数据范围的大小对维度进行排序,就可以达到逐层扩展的效果。如果对透视图不熟悉,可以先参考一个包含行政区划的简单例子:工作表记录中的每个地址包含“省-市-(区)县”三个字段。如果严格按照这个顺序设置,可以按照区域大小逐步显示。按省-市-县顺序显示当然,如果不按特定顺序排序,也不会影响报表的呈现,但无法更好地展示数据的层级或分组关系本身。在本文的需求中,我们自然会选择按照工作任务本身的层级关系来统计。按照市-区(县)-省的顺序确定报告的最终呈现形式,下一步为报告提供数据来源。通过刚才对数据透视表的特性的分析,我们可以看到当前数据透视表本身不具备的功能:在表现形式上,为了实现相同上层数据的自动合并展示,上层数据必须具有完全相同的内容。(任务名称+汇总结果)数据透视表虽然可以按维度合并数据,但不能分层进行数据统计。因此,我们需要计算数据源表中各层的汇总数据。明确了这两个目标。下一步就是要在现有的基础功能的基础上改造数据结构来满足需求。解决问题1.建立分层统计数据结构(月/类汇总表)。每一层都有唯一的记录,用于积累本层工作的汇总数据。系统会自动为通过日报提交的事件创建记录。2、创建透视图的数据源表,用于各级汇总字段的分层展示。注意:这里还是需要根据业务需求确定一个最大级别,因为数据透视表的行维度在配置的时候是固定的。字段格式设置为“任务名称-本层小时汇总”,需要逐层关联上一步的分类统计数据。也就是说,每条数据除了保存自己的工时外,还应该保存其所属的所有上级任务的工时汇总,并采用“文本组合”的方式统一格式。3.逐层统计一旦有新数据提交,工作流自动根据提交所在层级向上追溯,将本层新增工时添加到上层汇总字段中。由于这些字段已经与统计源数据相关联,因此所有相关数据都可以同步更新。添加日报表时,直接通过工作流创建步骤(2)对应的工时数据汇总记录。此时数据中只包含当前日报本身的工时,与(1)的汇总数据关联尚未建立。然后按照层级关系逐级累加,将各级汇总数据关联到当前记录。在逐层累加的设计中,我们采用了A、B子进程循环调用的方式。子流程封装了累加当前层级汇总数据和关联数据源表记录的逻辑。一个子流程处理完后,只需要判断当前计算层级是否有上一层,如果有,则调用另一个结构相同的子流程B继续累加,如此循环。完成这些配置和数据录入后,每份日报的数据中都会显示出以上层级的汇总信息,实现增强版的透视效果。由自动积累的数据源表自动生成的增强透视图。结束语通过一个小案例,我们实现了一个产品本身没有的功能。在充分分析业务需求的基础上,一定程度上可以突破产品本身的界限,总结一句话:“使用明道云产品最大的难点,可能不是产品没有任何功能目前,只是你缺乏想象力!”