3.每日活跃设备用户数统计

56 阅读2分钟

1 定义

前面章节中提到运营平台需要统计展示最近7天每天的、不同产品、不同城市的活跃设备用户数(即上线次数>=1的设备用户数)。

2 实现方案

既然是要展示最近7天每天的、不同产品、不同城市的活跃设备用户数。那么,首先我们需要存储每天的、不同产品、不同城市的活跃设备用户数。只要保存了,展示就只需要查询DB就可以了。

实现思路还是跟前面章节统计展示绑定设备用户数一样:

  • 统计服务保存原始数据:即每天设备上线次数(dev_id, online_count, online_date)
  • 每天凌晨跑定时任务:分组汇总聚合每天的不同产品、不同城市组合的活跃设备用户数

3 具体细节

3.1 保存原始数据

还是跟前面章节统计展示绑定设备用户数一样,基于AOP+消息队列异步方式由统计服务保存原始数据。

原始数据表tb_device_online_count,即每日设备上线次数表:基于此表汇总聚合每日活跃设备用户数(上线次数>=1的设备用户数量)

字段描述
online_count上线次数
dev_id设备id
online_date上线日期

3.2 每天定时任务:分组汇总聚合

分组汇总聚合sql:

// 分组汇总聚合当天的不同产品、不同城市组合的活跃设备用户数(上线次数>=1的设备用户数)
select oc.online_date,b.product,b.city,count(distinct b.user_id) as active_users
from tb_device_online_count oc
inner join tb_device_bind b on b.dev_id = oc.dev_id and b.bind_status = 1
where oc.online_date = '2025-02-16' and oc.online_count >= 1
group by oc.online_date,b.product,b.city;
 

聚合结果保存到每日活跃设备汇总表:

字段描述
stats_date统计日期
product_id产品id
city城市
active_users活跃设备用户数