文档文档

使用记录

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

记录语法

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

记录示例
{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 (time)exampleRecord (string)
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 开源版本现已发布公开 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看