使用 InfluxQL 计算一个区间内具有相同值的点(行)?
Using InfluxQL to count points (rows) with same value within an interval?
我正在尝试利用我对 InfluxQL 的适度 SQL 知识,但我遗漏了一些关于时间序列数据库性质的信息。
用例
当问题更新时,我从我们的问题跟踪器中写下测量结果:
issue_updated,project=facebook,ticket=fb1,assignee=coolman status="todo"
问题
给定这 returns 行问题状态:
SELECT status
FROM "issue_updated"
如果这是 SQL (fiddle),我会使用 COUNT
(然后添加 WHERE time > NOW() - 1Y GROUP BY time(5m)
)。然而,下面给出了 不支持混合聚合和非聚合查询
SELECT status, count(status) as 'Count'
FROM "issue_updated"
有人可以在这里指导一下吗? ta
听起来您正在寻找的是按当前不支持的字段值进行分组的功能。
据我所知,如果您稍微修改架构,应该可以实现您想要的效果。而不是
issue_updated,project=facebook,ticket=fb1,assignee=coolman status="todo"
做
issue_updated,project=facebook,ticket=fb1,assignee=coolman,status=todo value=1
然后
SELECT count(value) FROM "issue_updated" WHERE time > now() - 52w GROUP BY status
name: issue_updated
tags: status=other
time count
---- -----
1449523659065350722 1
name: issue_updated
tags: status=todo
time count
---- -----
1449523659065350722 2
应该可以。
我正在尝试利用我对 InfluxQL 的适度 SQL 知识,但我遗漏了一些关于时间序列数据库性质的信息。
用例
当问题更新时,我从我们的问题跟踪器中写下测量结果:
issue_updated,project=facebook,ticket=fb1,assignee=coolman status="todo"
问题
给定这 returns 行问题状态:
SELECT status
FROM "issue_updated"
如果这是 SQL (fiddle),我会使用 COUNT
(然后添加 WHERE time > NOW() - 1Y GROUP BY time(5m)
)。然而,下面给出了 不支持混合聚合和非聚合查询
SELECT status, count(status) as 'Count'
FROM "issue_updated"
有人可以在这里指导一下吗? ta
听起来您正在寻找的是按当前不支持的字段值进行分组的功能。
据我所知,如果您稍微修改架构,应该可以实现您想要的效果。而不是
issue_updated,project=facebook,ticket=fb1,assignee=coolman status="todo"
做
issue_updated,project=facebook,ticket=fb1,assignee=coolman,status=todo value=1
然后
SELECT count(value) FROM "issue_updated" WHERE time > now() - 52w GROUP BY status
name: issue_updated
tags: status=other
time count
---- -----
1449523659065350722 1
name: issue_updated
tags: status=todo
time count
---- -----
1449523659065350722 2
应该可以。