文档文档

使用 InfluxQL 聚合数据

InfluxDB 3 Core 处于公开 Alpha 阶段

InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适合生产环境使用。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 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 的每个唯一值的聚合值。

聚合函数

使用聚合函数聚合每个组中指定字段的值,并为每个组返回包含聚合字段值的单行。

查看 InfluxQL 聚合函数

基本聚合查询
SELECT MEAN(co) from home

选择器函数

使用选择器函数从指定字段“选择”一个值。

查看 InfluxQL 选择器函数

基本选择器查询
SELECT TOP(co, 3) from home

示例聚合查询

示例数据

以下示例使用家庭传感器数据。要运行示例查询并返回结果,请在运行示例查询之前将示例数据写入您的 InfluxDB 3 Core 数据库。

执行未分组的聚合

要聚合指定字段中的所有查询值

  • 在您的 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

查看示例结果

通过应用基于间隔的聚合来降采样数据

查询时间序列时的常见用例是通过将聚合应用于基于时间的组来降采样数据。要将数据分组和聚合到基于时间的组中

  • 在您的 SELECT 子句中,将聚合选择器函数应用于查询字段。

  • 在您的 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

查看示例结果


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版本现已公开发布 Alpha 版

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

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

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

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