语境
我在一个带有 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])