Documentation

Flux 数据模型

要充分利用Flux处理您的数据,您必须了解Flux如何构建和操作数据。 Flux数据模型包括以下内容:

表的流

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

表格

A 是一个由 按照 分组键 划分的集合。

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

A 是一组相关的 值的集合。

分组键

一个 组键 定义了在一系列表中用于分组的列。
一系列表中的每个表代表一个独特的 组键实例
表中的所有行在每个组键列上具有相同的值。

示例组键

一个组键可以通过一组列标签表示。

[_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 分组的数据,因此返回的表流中的每个表代表一个唯一的系列。然而,SQL data sources 返回的表流包含一个单一的表和一个空的组键。

以下划线开头的列标签

一些数据源返回以下划线 (_) 为前缀的列标签。这是一个 Flux 约定,用于识别重要或保留的列名。虽然下划线并不会改变列的功能,但 Flux 标准库 中的许多函数期望或需要这些特定的列名。

对表进行操作

在其核心,Flux 在表上操作。 Flux 转换接收一系列表作为输入,但对每个表单独操作。 例如,聚合转换如 sum(),输出一系列表,每个对应的输入表对应一个表:

|> sum()

重构表格

流中的所有表由它们的 组键 定义。 要改变数据在表中的分区或分组方式,可以使用诸如 group()window() 的函数来修改流中的表的组键。

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

表格分组示例

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

  • example 测量
  • loc 标签包含两个值
  • 带有两个值的 sensorID 标签
  • temphum 字段

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

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


Flux的未来

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

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

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

有关如何开始的更多信息,请查看: