离线报表

/ 数据库 / 没有评论 / 1897浏览

离线报表生成规则

为什么生成离线报表

报表的表结构

增加记录到报表中(实时数据)

  1. 从源数据中取出数据(订单表、使用记录等等)
  1. 生成纬度
  1. MQ生产者生产

  2. 其他模块消费者处理: addGroup

  1. 这里可能会存在问题

重新生成报表

为什么需要重新生成报表

重新生成时需要注意点

怎么重新生成

  1. 判断是否处于重新生成过程中。
  1. 发送到MQ,开始重新生成
  2. MQ消费这开始处理,根据数据来源可以拆分成几个业务段。 如来源分为订单表、退单表、使用记录表,则可以拆分成如下业务段,并给指定业务段进行命名:
  1. 各个业务段分别处理指定的业务
  2. 处理完成当前业务段后,执行下个业务段。

删除业务段

删除报表中数据,如不在当前服务,则通过远程调用(如: feign)删除.

具体数据处理业务段

  1. 查询时间段源数据,并指定分页上线,防止查询时间过长,并指定上次查询最后1条ID防止重复查询,第一次查询时不指定上次查询ID。
  1. 获取最后Id
  2. 生成纬度数据 可以将相同纬度的数据先在内存中累加,防止发送MQ次数过多。如源数据存在3条记录:公司A 包含1个订单, 公司A包含2个订单,公司B包含1个订单,则可以整合成公司A包含3个订单,公司B包含1个订单。
  3. MQ生产者生产,后续参见《增加记录到报表中(实时数据)》第4步。
  4. 判断当前业务段是否结束,已经结束则将最后一个ID重置为空,并进行下一个业务段 ; 没有则传入最后一个ID,进行下一次处理。