InfluxDB计算两个字段的差值
问题背景
使用InfluxDB时,有时候,我们需要计算同一个表(也就是influxDB中的measurement)中两个字段的差值(field)。
比如,有个measurement,用于记录玩家在尝试从游戏A跳转到游戏B中的事件。需要注意的是,由于一旦玩家成功从游戏A跳转到游戏B中,那么,在游戏A中,是无法统计这个事件的。
在游戏A中,可以统计到两个事件:
- 玩家尝试跳转 attempt_event
- 玩家取消跳转 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