/ 开发笔记

InfluxDB计算两个字段的差值

问题背景

使用InfluxDB时,有时候,我们需要计算同一个表(也就是influxDB中的measurement)中两个字段的差值(field)。

比如,有个measurement,用于记录玩家在尝试从游戏A跳转到游戏B中的事件。需要注意的是,由于一旦玩家成功从游戏A跳转到游戏B中,那么,在游戏A中,是无法统计这个事件的。

在游戏A中,可以统计到两个事件:

  1. 玩家尝试跳转 attempt_event
  2. 玩家取消跳转 cancel_event

那么,成功跳转的事件数就是 success_event = attempt_event - cancel_event

那么,在influxDB中,要怎么查询这样的数据呢?

解决方法

  • 步骤1.
    将attempt_event和cancel_event作为field,而不是tag插入事件表(events)中。

  • 步骤2.
    执行以下influxsql语句

select (sum(attempt_event)-sum(cancel_event)) as success_sum from events