我在 influxdb 中有一些数据,其中有一个
failure
字段键,它是一堆用逗号分隔的名称(不是一组数据)。我想在 grafana 中为每个名称创建一个新行。现在,我只是在 influxdb 中为每个名称使用一个新条目,但这会在 influx 中创建大量数据点。所以我希望只有一个具有多个名称的数据点。
首先,在grafana中有没有办法做到这一点?据我所知,没有。
所以我正在尝试使用助焊剂。以下查询用于从 influx 中获取我需要的数据点,它显示每个字段的数据并标记一个单独的列,但字段
failure
中只有 csv。
from(bucket:"testbucket")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "care_stigs" and r.device_name == "Paul")
|> pivot(
rowKey:["_time", "_measurement"],
columnKey: ["_field"],
valueColumn: "_value"
)
我尝试了多种方法,包括以下帖子中的方法:
如何在 Flux (InfluxDB) 中将字符串列一分为二
以下给了我一个错误
invalid: error @16:22-20:13: found unexpected argument failure (Expected
r) (argument fn) error @16:22-20:13: missing required argument r (argument fn) error @14:6-21:8: expected stream[string] but found [string] (array) (argument tables)
import "strings"
from(bucket:"testbucket")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "care_stigs" and r.device_name == "Paul")
|> pivot(
rowKey:["_time", "_measurement"],
columnKey: ["_field"],
valueColumn: "_value"
)
|> map(fn: (r) => ({
parts: strings.split(v: r.failed, t: ",")
}))
|> map(fn: (r) =>
r.parts
|> map(fn: (failure) => ({
first: failure[0],
second: failure[1],
third: failure[2]
}))
)
我最接近的是做
import "strings"
from(bucket:"testbucket")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "care_stigs" and r.device_name == "Paul")
|> pivot(
rowKey:["_time", "_measurement"],
columnKey: ["_field"],
valueColumn: "_value"
)
|> map(fn: (r) => ({
"time": r._time,
"measurement": r._measurement,
"device": r.device,
"failed": strings.split(v: r.failed, t: ",")
}))
但这给了我以下错误(我理解):
invalid: runtime error @11:6-16:10: map: map object property "failed" is array type which is not supported in a flux table
如何将这些部分变成行?尤其是不知道确切的行数? (顺便说一句,如果有帮助的话,我每个查询只需要一个数据点 - 但我想要一个来自该数据点的表,其中行是逗号分隔的值)