InfluxDB按tag统计条目数:cars库统计各品牌车辆通行次数
当然可行!问题出在查询语句的写法上
你想要统计各品牌车辆的通行次数,本质就是按make标签分组,统计每组的数据点数量——这在InfluxDB里完全可以实现,只是你用的查询语句没抓对重点。
为什么你的原语句不生效?
你写的select count(make) from my_series where time > now()-10d group by make;有个小问题:count(make)是在统计非空的make标签值的数量,但因为make是标签,每个数据点都必然带有这个标签,所以它最终统计的其实是全量数据点的总数,而且InfluxDB在处理标签的count聚合时,没有正确绑定分组后的标签值,才会出现返回结果里tags: make=为空的情况。
正确的查询写法
你需要统计的是每个make分组下的数据点数量,用count(*)或者统计某个存在于所有数据点的字段即可:
SELECT count(*) FROM my_series WHERE time > now() - 10d GROUP BY make
如果你的数据里有固定的字段(比如记录通行事件的pass_record字段),也可以用这个字段来统计,效果是一样的:
SELECT count(pass_record) FROM my_series WHERE time > now() - 10d GROUP BY make
执行后你会得到什么?
正确执行后,结果会按每个make标签值分组展示,比如:
name: my_series
tags: make=ford
time count1524058438416676920 12345
name: my_series
tags: make=toyota
time count1524058438416676920 67890
这样每个品牌对应的通行次数就清晰了。
内容的提问来源于stack exchange,提问作者Ken - Enough about Monica
相关产品推荐
相关产品推荐

