文档文档

Flux 数据模型

为了充分利用 Flux 处理数据,您必须了解 Flux 如何组织和操作数据。**Flux 数据模型** 包括以下内容

表流

表流是零个或多个的集合。数据源将结果作为表流返回。

表是由分组键分区的的集合。

列是相同基本类型的值的集合,其中每包含一个值。

行是关联的值的集合。

分组键

分组键定义了在表流中用于分组表的列。表流中的每个表代表一个唯一的分组键实例。表中的所有行对于每个分组键列都包含相同的值。

分组键示例

分组键可以用列标签数组表示。

[_measurement, facility, _field]
分组键实例示例

分组键实例(每个表唯一)包括键值对,用于标识表中具有相同值的每个列名。以下是包含三个独立表的表流中的分组键实例示例。每个实例代表一个包含唯一位置数据的表

[_measurement: "production", facility: "us-midwest", _field: "apq"]
[_measurement: "production", facility: "eu-central", _field: "apq"]
[_measurement: "production", facility: "ap-east", _field: "apq"]

空分组键将表流中的所有数据分组到一个表中。

有关分组键如何工作的示例,请参见下面的表分组示例

数据源决定数据结构

Flux 数据模型与查询的数据源模型是分开的。查询源返回的数据结构化为列式表。表结构和包含的列取决于数据源。

例如,InfluxDB 返回按 series 分组的数据,因此返回的表流中的每个表都代表一个唯一的 series。但是,SQL 数据源返回的表流只有一个表和一个空分组键。

以下划线开头的列标签

某些数据源返回带有下划线 (_) 前缀的列标签。这是 Flux 用于标识重要或保留列名的约定。虽然下划线不会更改列的功能,但 Flux 标准库中的许多函数都期望或要求使用这些特定的列名。

操作表

Flux 的核心是对表进行操作。Flux 转换将表流作为输入,但单独对每个表进行操作。例如,像 sum() 这样的聚合转换,为每个对应的输入表输出一个包含一个表的表流

|> sum()

重构表

表流中的所有表都由其分组键定义。要更改数据分区或分组到表中的方式,请使用诸如 group()window() 之类的函数来修改表流中的分组键。

data
    |> group(columns: ["foo", "bar"], mode: "by")

表分组示例

下表表示从 InfluxDB 返回的数据,具有以下模式

  • example measurement
  • loc 标签,具有两个值
  • sensorID 标签,具有两个值
  • temphum 字段

要修改分组键并查看示例数据如何分区到新表中,请选择要分组的列

data
  |> group(columns: ["_measurement", "loc", "sensorID", "_field"])

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看