influxdb - InfluxDB 2.0 - 如何使用 Flux 将 2 个单独的存储桶流合并和求和
问题描述
语境
我在一个带有 influxDB 的应用程序中工作,我面临一个我不知道如何解决的用例。
我正在使用 influxDB 2 和 Flux 进行查询。
用例
为了简化我的用例,我将以蜜蜂为例。
我想测量蜜蜂种群随时间的演变。
我在 2 个单独的桶中测量了 2 个蜜蜂种群(蜜蜂 A 的桶 A 和蜜蜂 B 的桶 B)。
所以我想找到一个合并这两个桶的查询,以便随时获取当前的蜜蜂种群。
在我的用例中,必须使用 2 个存储桶。我想要的只是一种在查询时“组合”结果的方法。
结果应根据时间戳进行排序
例子
Bee A
对存储桶和存储桶的查询Bee B
返回前 2 行中的值。目标是创建Total
线。
示例 1:
如果测量值始终为 A、B、A、B;结果必须是
人口 | ||||||||
---|---|---|---|---|---|---|---|---|
蜜蜂A | 10 | 12 | 5 | 22 | ||||
蜜蜂B | 20 | 16 | 19 | 36 | ||||
全部的 | 10 | 30 | 32 | 28 | 21 | 24 | 41 | 58 |
示例 2:
如果测量值是 A、B、A、A、A、B;结果必须是
人口 | ||||||||
---|---|---|---|---|---|---|---|---|
蜜蜂A | 10 | 12 | 5 | 22 | ||||
蜜蜂B | 20 | 16 | 19 | 36 | ||||
全部的 | 10 | 30 | 32 | 25 | 42 | 38 | 41 | 58 |
代码
我尝试使用union
,但我无法让它工作,因为它保留了 2 个单独的表而不是一个。
bucket1 = from(bucket: "beeA")
|> range(start: 0)
|> filter(fn: (r) => r["_measurement"] == "population")
|> filter(fn: (r) => r["_field"] == "pop")
|> sort(columns: ["_time"])
bucket2 = from(bucket: "beeB")
|> range(start: 0)
|> filter(fn: (r) => r["_measurement"] == "population")
|> filter(fn: (r) => r["_field"] == "pop")
|> sort(columns: ["_time"])
union(tables: [bucket1, bucket2])
解决方案
您可以尝试删除, |> sort(columns: ["_time"])
。还要检查|> range(start: 0)
. 您可以提供不同的时间范围,最后检查您拥有数据的选定时间范围。
推荐阅读
- c# - C#:多个类实例都做同样的事情
- firebase - Flutter Firestore 查询嵌套子集合
- apache-spark - 在 pySpark 中解析无效的 JSON
- kubernetes - http:代理错误:x509:证书由未知权威签署
- apache-camel - Camel ProducerTemplate requestBody 和返回类型
- winapi - 获取音频设备的图标
- r - 在 Tidyverse 中过滤事件数据的时间
- python - 在我的 SQL Server 数据库中存储 TimeDelta
- android - 在 viewpager 片段的 recyclerview 中插入原生广告
- node.js - UnhandledPromiseRejectionWarning:错误:ENOENT:没有这样的文件或目录,打开