我使用 influx db 查询返回指标,我通过编写三个查询将三个表结果合并为一个,并使用 join() 进行合并,但如果其中一个查询没有返回结果,则合并表不返回结果我需要返回其他查询数据
这是我的查询磁盘和内存返回数据,但如果我将 cpu 与磁盘和内存合并,然后合并表返回无结果,则 cpu 不返回结果 这是我的询问
我使用 influx db 查询返回指标我通过编写三个查询将三个表结果合并为一个,并使用 join() 进行合并,但如果其中一个查询没有返回结果,则合并表不返回结果我需要返回其他查询数据 这是我的询问
在此输入
//Define your queries for different measurements
memory=from(bucket: "telegraf")
|> range(start : -2d)
| > filter(fn: (r) => r["_measurement"] == "mem")
|> filter(fn: (r) => r["_field"] == "used")
|> filter(fn: (r) => r["host"] == "host")
|> limit(n:20)
|> map(fn:(r) => ({r with "_value" : string(v: r["_value"])}))
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
|> group()
|> sort(columns: ["_time"], desc: false)
disk=from(bucket: "telegraf")
|> range(start : -2d)
|> filter(fn: (r) => r["_measurement"] == "disk")
| > filter(fn: (r) => r["_field"] == "used")
|> filter(fn: (r) => r["host"] == "host")
|> limit(n:20)
|> map(fn:(r) => ({r with "_value" : string(v: r["_value"])}))
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
|> group()
|> sort(columns: ["_time"], desc: false)
cpu=from(bucket: "telegraf")
|> range(start : -2d)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage_idle")
|> filter(fn: (r) => r["host"] == "host")
|> limit(n:20)
|> map(fn:(r) => ({r with "_value": float(v: r["_value"])}))
|> map(fn: (r) => ({ r with _value: 100.0 - r._value }))
|> map(fn:(r) => ({r with "_value" : string(v: r["_value"])}))
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
|> group()
|> sort(columns: ["_time"], desc: false)
result=join(tables:{memory:memory, disk:disk}, on:["_time"])
join(tables: {result: result,cpu: cpu}, on:["_time"])
|>yield()
i solved this by using replace join by union and doing pivot in last result
as
memory=from(bucket: "telegraf")
|> range(start:-2d)
|> filter(fn: (r) => r["_measurement"] == "mem")
|> filter(fn: (r) => r["_field"] == "used")
|> filter(fn: (r) => r["host"] == "host_id}")
|> limit(n:10)
|> map(fn:(r) => ({r with "_value" : string(v: r["_value"])}))
|> group()
cpu=
from(bucket: "telegraf")
|> range(start:-2d)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage_idle")
|> filter(fn: (r) => r["host"] == "${host_id}")
|> limit(n:10)
|> map(fn:(r) => ({r with "_value": float(v: r["_value"])}))
|> map(fn: (r) => ({ r with _value: 100.0 - r._value }))
|> map(fn:(r) => ({r with "_value" : string(v: r["_value"])}))
|> group()
disk = from(bucket: "telegraf")
|> range(start:-2d)
|> filter(fn: (r) => r["_measurement"] == "disk")
|> filter(fn: (r) => r["_field"] == "used")
|> filter(fn: (r) => r["host"] == "${host_id}")
|> limit(n:10)
|> map(fn: (r) => ({ r with _value: string(v: r._value) }))
|> group()
union(tables: [memory, disk, cpu])
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn:
"_value")
|> group()
|> sort(columns: ["_time"], desc: false)