如何使用Flux限制Influx OSS的查询返回记录数?
解决InfluxDB 2.3中limit函数不生效的问题
问题根源:Flux的
limit函数默认是对每个数据分组生效,而非全局生效。你的查询执行range后,数据会自动按每个时间序列(_measurement、_field加上所有标签的组合)分组,若存在40个不同的时间序列,每个序列返回10条记录,总条数就是40×10=400条,这就是你看到的结果。全局限制条数的解决办法:在
limit之前添加|> group()(不带任何参数),取消所有自动分组,把所有数据合并成一个数据集,此时limit就会全局生效:
from(bucket: "readings") |> range(start: -1d) |> group() // 取消自动分组,合并所有数据 |> limit(n:10)
- 关于offset无结果的问题:同样是分组导致的——如果每个分组的记录数少于你设置的
offset:2,每个分组都会返回0条记录,最终结果自然为空。同样先合并分组再使用offset:
from(bucket: "readings") |> range(start: -1d) |> group() |> limit(n:10, offset:2)
- 额外说明:如果你需要对每个分组单独限制条数,那你最初的写法是正确的;但如果要全局限制总条数,必须先取消分组。
内容的提问来源于stack exchange,提问作者wmmhihaa
相关产品推荐
相关产品推荐

