1

我有一列#datatype string被称为names并包含每一行的以下信息:

ABV,BVA
BAC,DWA
ZZA,DSW
  ...

我的问题是我怎样才能(通过逗号,)将此列拆分为具有名称(names_1names_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: ","))
4

2 回答 2

2

我想你可能正在寻找这样的东西:

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 读取数据。map 函数期望返回一条记录。如果您有一些数据在拆分后可能没有两个值,您还可以这样做:

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: ""}
  })
于 2020-11-25T15:26:00.440 回答
2

你最初的尝试几乎没问题。

这样它应该拆分列:

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]
  }))
于 2021-03-20T10:48:40.967 回答