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
measurementloc
标签,具有两个值sensorID
标签,具有两个值temp
和hum
字段
要修改分组键并查看示例数据如何分区到新表中,请选择要分组的列
data
|> group(columns: ["_measurement", "loc", "sensorID", "_field"])
此页面是否对您有帮助?
感谢您的反馈!