使用 InfluxQL 聚合数据
InfluxDB 3 Core 处于公开 Alpha 阶段
InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适合生产环境使用。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 alpha 体验的反馈,并邀请您加入我们的公共频道以获取更新和分享反馈。
一个聚合数据的 InfluxQL 查询包含以下子句
* 必需- *
SELECT
: 指定要从 measurement 输出的字段和计算,或使用通配符别名 (*
) 选择 measurement 中的所有字段和标签。 - *
FROM
: 指定要从中查询数据的 measurement。 WHERE
: 仅检索满足指定条件的数据——例如,时间在时间范围内,包含特定标签值,或包含超出指定阈值的字段值。GROUP BY
: 按标签值和时间间隔对数据进行分组。
为了简单起见,本指南中的术语“聚合”指的是将聚合函数和选择器函数都应用于数据集。
了解如何将聚合操作应用于您查询的数据
InfluxDB v1 到 InfluxDB 3 数据模型
InfluxQL 是围绕 InfluxDB v1 数据模型设计的,但仍然可以用于查询 InfluxDB 3 Core 中的数据。当使用 InfluxDB 3 Core InfluxQL 实现时,数据模型在以下方面有所不同
- InfluxDB v1 的数据库和保留策略组合被合并为一个 InfluxDB 3 数据库实体。
- InfluxDB v1 的 measurement 等同于 InfluxDB 3 的 table。
聚合函数和选择器函数
聚合函数和选择器函数都从每个组返回有限数量的行。聚合函数返回单行,而某些选择器函数允许您指定从每个组返回的行数。例如,如果您 GROUP BY room
并在 SELECT
子句中执行聚合操作,则结果将包含 room
的每个唯一值的聚合值。
聚合函数
使用聚合函数聚合每个组中指定字段的值,并为每个组返回包含聚合字段值的单行。
基本聚合查询
SELECT MEAN(co) from home
选择器函数
使用选择器函数从指定字段“选择”一个值。
基本选择器查询
SELECT TOP(co, 3) from home
示例聚合查询
执行未分组的聚合
要聚合指定字段中的所有查询值
- 在您的
SELECT
语句中使用聚合函数或选择器函数。 - 不要包含
GROUP BY
子句以使您的数据保持未分组状态。
SELECT MEAN(co) AS "average co" FROM home
分组和聚合数据
要将聚合函数或选择器函数应用于分组数据
- 在您的
SELECT
语句中使用聚合函数或选择器函数。 - 包含一个
GROUP BY
子句,其中包含以逗号分隔的标签列表以进行分组。
使用 GROUP BY
时请记住以下几点
GROUP BY
可以使用在SELECT
子句中定义的列别名。
SELECT
MEAN(temp) AS "average temp"
FROM home
GROUP BY room
通过应用基于间隔的聚合来降采样数据
查询时间序列时的常见用例是通过将聚合应用于基于时间的组来降采样数据。要将数据分组和聚合到基于时间的组中
在您的
WHERE
子句中,包含查询的时间范围。基于间隔的聚合为每个指定的时间间隔生成一行。如果在WHERE
子句中未指定时间范围,则查询使用默认时间范围(1970-01-01T00:00:00Z 到现在)并为该时间范围内的每个间隔返回一行。在您的
GROUP BY
子句中- 使用
time()
函数来指定要分组的时间间隔。 - 可选:指定要分组的其他标签。
- 使用
以下示例检索时间间隔和房间的唯一组合,以及它们的最低、最高和平均温度。
SELECT
MAX(temp) AS "max temp",
MIN(temp) AS "min temp",
MEAN(temp) AS "average temp"
FROM home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time < '2022-01-01T20:00:00Z'
GROUP BY time(2h), room
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。