文档文档

使用记录

记录类型是一组键值对(也称为属性)。键(也称为标签)是字符串。值可以是任何数据类型。每个属性可以有不同的值类型。

记录语法

记录字面量包含一组键值对(属性),用花括号({})括起来。属性用逗号分隔。属性键必须是字符串,并且可以选择用双引号(")括起来。如果属性键包含空格字符或仅包含数字字符,则必须将属性键用双引号括起来。属性键通过冒号(:)与值关联。值可以是任何类型

记录示例
{foo: "bar", baz: 123.4, quz: -2}

{"Company Name": "ACME", "Street Address": "123 Main St.", id: 1123445}

引用记录中的值

Flux 记录是键索引的。要引用记录中的值,请使用点表示法方括号表示法并指定要引用的键。

点表示法

指定要访问的记录,后跟句点(.)和属性键。

c = {name: "John Doe", address: "123 Main St.", id: 1123445}

c.name
// Returns John Doe

c.id
// Returns 1123445

方括号表示法

指定要访问的记录,后跟用双引号和方括号([""])括起来的属性键。

使用方括号表示法来访问具有特殊字符或空格字符的键。

c = {"Company Name": "ACME", "Street Address": "123 Main St.", id: 1123445}

c["Company Name"]
// Returns ACME

c["id"]
// Returns 1123445

引用嵌套记录

要引用嵌套记录,请为每个嵌套级别使用链式点或方括号表示法。

customer = 
    {
        name: "John Doe",
        address: {
            street: "123 Main St.",
            city: "Pleasantville",
            state: "New York"
        }
    }

customer.address.street
// Returns 123 Main St.

customer["address"]["city"]
// Returns Pleasantville

customer["address"].state
// Returns New York

静态引用键

记录键只能静态引用,这意味着您不能动态指定要访问的键。例如

key = "foo"
o = {foo: "bar", baz: 123.4}

o.key
// Error: type error: record is missing label key

要动态引用复合类型中的键,请考虑使用字典

操作记录

扩展记录

使用 with 运算符来扩展记录。如果指定的键存在,则 with 运算符会覆盖记录属性;如果键不存在,则添加新属性。

c = {name: "John Doe", id: 1123445}

{c with spouse: "Jane Doe", pet: "Spot"}
// Returns {id: 1123445, name: John Doe, pet: Spot, spouse: Jane Doe}

列出记录中的键

  1. 导入 experimental
  2. 使用 experimental.objectKeys 返回记录中键的数组。
import "experimental"

c = {name: "John Doe", id: 1123445}

experimental.objectKeys(o: c)
// Returns [name, id]

比较记录

使用 == 比较运算符来检查两个记录是否相等。相等性基于键、它们的值和类型。

{id: 1, msg: "hello"} == {id: 1, msg: "goodbye"}
// Returns false

{foo: 12300.0, bar: 34500.0} == {bar: float(v: "3.45e+04"), foo: float(v: "1.23e+04")}
// Returns true

返回记录的字符串表示形式

使用 display() 返回记录的 Flux 字面量表示形式作为字符串。

x = {a: 1, b: 2, c: 3}

display(v: x)

// Returns "{a: 1, b: 2, c: 3}"

在表中包含记录的字符串表示形式

使用 display() 返回记录的 Flux 字面量表示形式作为字符串,并将其作为列值包含在内。

import "sampledata"

sampledata.string()
    |> map(fn: (r) => ({_time: r._time, exampleRecord: display(v: {tag: r.tag, value:r._value})}))

输出

_time (时间)exampleRecord (字符串)
2021-01-01T00:00:00Z{tag: t1, value: smpl_g9qczs}
2021-01-01T00:00:10Z{tag: t1, value: smpl_0mgv9n}
2021-01-01T00:00:20Z{tag: t1, value: smpl_phw664}
2021-01-01T00:00:30Z{tag: t1, value: smpl_guvzy4}
2021-01-01T00:00:40Z{tag: t1, value: smpl_5v3cce}
2021-01-01T00:00:50Z{tag: t1, value: smpl_s9fmgy}
2021-01-01T00:00:00Z{tag: t2, value: smpl_b5eida}
2021-01-01T00:00:10Z{tag: t2, value: smpl_eu4oxp}
2021-01-01T00:00:20Z{tag: t2, value: smpl_5g7tz4}
2021-01-01T00:00:30Z{tag: t2, value: smpl_sox1ut}
2021-01-01T00:00:40Z{tag: t2, value: smpl_wfm757}
2021-01-01T00:00:50Z{tag: t2, value: smpl_dtn2bv}

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层级可供非商业家庭或业余爱好者使用。

有关更多信息,请查看