如何在 Flux (InfluxDB) 中将字符串列一分为二
How to split a string column in two in Flux (InfluxDB)
我有一个 #datatype
string
列,称为 names
并且每行包含以下信息:
ABV,BVA
BAC,DWA
ZZA,DSW
...
我的问题是如何将此列拆分(通过逗号 ,
)为名称为(names_1
和 names_2
)的两列,这样我会得到类似这个:
names_1 names_2
ABV BVA
BAC DWA
ZZA DSW
...
我试过 strings.split()
但它只适用于单个字符串。所以也许我需要一种方法来将此代码应用于整个专栏:
import "strings"
data
|> map (fn:(r) => strings.split(v: r.names, t: ","))
我想您可能正在寻找这样的东西:
import "experimental/array"
import "strings"
array.from(rows: [{value: "A,B"}])
|> map(fn: (r) => {
parts = strings.split(v: r.value, t: ",")
return {first: parts[0], second: parts[1]}
})
可以将array.from()
换成from()
来读取influxdb的数据。地图函数期望返回一条记录。如果你有一些数据在拆分后可能没有两个值,你也可以这样做:
import "experimental/array"
import "strings"
array.from(rows: [{value: "A,B"}])
|> map(fn: (r) => {
parts = strings.split(v: r.value, t: ",")
return if length(arr: parts) > 1 then
{first: parts[0], second: parts[1]}
else {first: parts[0], second: ""}
})
你最初的尝试几乎没问题。
这样它应该拆分列:
import "strings"
data
|> map (fn:(r) => ({
r with
names_1: strings.split(v: r.name, t: ",")[0],
names_2: strings.split(v: r.name, t: ",")[1]
}))
我有一个 #datatype
string
列,称为 names
并且每行包含以下信息:
ABV,BVA
BAC,DWA
ZZA,DSW
...
我的问题是如何将此列拆分(通过逗号 ,
)为名称为(names_1
和 names_2
)的两列,这样我会得到类似这个:
names_1 names_2
ABV BVA
BAC DWA
ZZA DSW
...
我试过 strings.split()
但它只适用于单个字符串。所以也许我需要一种方法来将此代码应用于整个专栏:
import "strings"
data
|> map (fn:(r) => strings.split(v: r.names, t: ","))
我想您可能正在寻找这样的东西:
import "experimental/array"
import "strings"
array.from(rows: [{value: "A,B"}])
|> map(fn: (r) => {
parts = strings.split(v: r.value, t: ",")
return {first: parts[0], second: parts[1]}
})
可以将array.from()
换成from()
来读取influxdb的数据。地图函数期望返回一条记录。如果你有一些数据在拆分后可能没有两个值,你也可以这样做:
import "experimental/array"
import "strings"
array.from(rows: [{value: "A,B"}])
|> map(fn: (r) => {
parts = strings.split(v: r.value, t: ",")
return if length(arr: parts) > 1 then
{first: parts[0], second: parts[1]}
else {first: parts[0], second: ""}
})
你最初的尝试几乎没问题。
这样它应该拆分列:
import "strings"
data
|> map (fn:(r) => ({
r with
names_1: strings.split(v: r.name, t: ",")[0],
names_2: strings.split(v: r.name, t: ",")[1]
}))