如何获取测量中的条目数

问题描述 投票:0回答:3

我是 influxdb 的新手。我刚开始阅读涌入文档。

我似乎无法获得相当于 'select count(*) from table' 在 influx db 中工作。

我有一个叫做购物车的测量:

time                status  cartid          
1456116106077429261 0       A
1456116106090573178 0       B
1456116106095765618 0       C
1456116106101532429 0       D

但是当我尝试做

select count(cartid) from cart

我得到错误

ERR: statement must have at least one field in select clause
influxdb
3个回答
9
投票

我想 cartId 是一个标签而不是一个字段值?

count()
目前不能用于标签和时间列。因此,如果您的
status
是非标记列(字段),请计算它。

编辑:

参考


5
投票

只要不存在名称为

count
的字段或标签,这就有效:

SELECT SUM(count) FROM (SELECT *,count::INTEGER FROM MyMeasurement GROUP BY count FILL(1))

如果它确实为

count
字段使用其他名称。这通过首先选择包括未填充字段 (
count
) 的所有条目然后按未填充字段分组来工作,这只允许我们使用填充运算符将
1
分配给
count
的每个条目。然后我们在超级查询中选择计数字段的总和。结果应该是这样的:

name: MyMeasurement
----------------
time    sum
0       47799

这有点老套,但这是在所有条目中不存在始终存在的字段时保证 all 条目计数的唯一方法。


0
投票

如果您使用的是 InfluxDB 2,您可以通过 Flux 查询来获取

from(bucket: "primary")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "motor")
  |> count()
  |> yield(name: "count")

只要确保给出一个大的时间范围以包含所有数据。

这是在 InfluxDB 数据资源管理器中运行它的屏幕截图:

© www.soinside.com 2019 - 2024. All rights reserved.