如何在Anylogic中按日记录队列人数、超时离开人数等数据并生成图表
每日timeout离开人数统计实现方案
注意:无需修改你现有的累计总量统计逻辑,也不用手动重置累计数值,基于现有数据做差值计算即可,改动量极小
一、存储层调整
- 新增
每日timeout数据快照表,核心字段如下:stat_date:统计日期,格式为YYYY-MM-DD,设为唯一键total_timeout_count:该日期结束时的累计timeout离开总人数daily_incr_count:当日新增的timeout离开人数
- 保留你当前在用的实时累计总数字段,正常按照原有逻辑更新即可
二、每日数据统计逻辑(二选一即可)
方案1:定时任务自动统计(推荐,适合正式生产环境)
配置每天00:05执行的定时任务,执行逻辑:
- 读取当前实时累计的timeout总人数,记为
prev_day_total - 读取前一天的快照数据中的
total_timeout_count,记为last_total(首次执行时last_total取0即可) - 计算前一天的新增人数:
daily_incr_count = prev_day_total - last_total - 将前一天的日期、
prev_day_total、daily_incr_count写入快照表
该方案全程无需人工干预,也不会影响你原有累计值的记录,稳定性高
方案2:手动回溯统计(适合小项目/无定时任务环境)
需要生成数据时执行统计脚本:
- 输入要统计的日期区间,或者指定单个统计日期
- 读取该日期24点时的累计总人数,减去上一日24点的累计总人数,即可得到当日新增人数
- 将计算结果存入快照表,后续直接取用无需重复计算
三、图表生成实现
直接读取快照表中的stat_date和daily_incr_count两个字段即可生成每日趋势图:
- 前端可视化可以用ECharts、Chart.js等工具生成折线图/柱状图
- 后台报表可以直接导出快照表数据到Excel、Tableau等工具生成图表
四、异常兼容处理
- 如果定时任务执行失败漏统计,可以开发补数脚本:指定漏统计的日期,读取对应日期24点的累计值回溯计算,补入快照表即可
- 如果累计总数值有修正调整,只需要重新计算调整日期之后所有的
daily_incr_count更新快照表即可,不需要修改原始累计数据
内容的提问来源于stack exchange,提问作者feiqideansha
相关产品推荐
相关产品推荐

