influxdb v3查询合并表没有返回结果

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

我使用 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()


devops monitoring influxdb influxdb-2
1个回答
0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.