Documentation

执行基本的InfluxQL查询

InfluxQL(Influx 查询语言)是一种类似于 SQL 的查询语言,用于与 InfluxDB 交互并处理时间序列数据。

一个基本的 InfluxQL 查询从 InfluxDB 查询数据通常包括以下子句:

* Required
  • * SELECT: 指定要从测量中返回的字段、标签和计算,或使用通配符别名 (*) 选择测量中的所有字段和标签。至少需要一个 field key 或通配符别名 (*)。 有关更多信息,请参见 Notable SELECT statement behaviors
  • * FROM: 指定要查询的 measurement。它需要一个或多个用逗号分隔的 measurement expressions
  • WHERE: 根据 字段值, 标签值时间戳过滤数据。仅返回满足指定条件的数据,例如,落在 一个时间范围内,包含特定标签值,或包含超出指定范围的字段值。
SELECT
  temp,
  hum,
  room
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T20:00:00Z'

结果集

如果至少一行满足查询,InfluxDB Cloud Serverless 将在查询结果集中返回行数据。
如果查询使用了 GROUP BY 子句,结果集包括以下内容:

  • 查询的SELECT子句中列出的列
  • 一个 time 列,其中包含记录或组的时间戳
  • 一个 iox::measurement 列,包含记录的测量(表)名称
  • 查询中 GROUP BY 子句列出的列;结果集中的每一行包含用于分组的值

按组结果列

如果查询使用 GROUP BY 并且 WHERE 子句没有按照时间过滤,那么分组将基于 默认时间范围

基本查询示例

示例数据

以下示例使用了 开始使用家庭传感器数据。 要运行示例查询并返回结果, 写入示例数据 到您的 InfluxDB Cloud 无服务器数据库,然后再运行示例查询。

在时间边界内查询数据

  • 使用 SELECT 子句来指定要返回的标签和字段。 至少指定一个字段键。 要返回所有标签和字段,请使用通配符别名 (*)。
  • FROM子句中指定要查询的测量。
  • WHERE子句中指定时间边界。
    包含基于时间的谓词,将time列的值与时间戳进行比较。
    使用AND逻辑运算符将多个谓词连接在一起。
SELECT *
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T12:00:00Z'

查询时间边界可以是相对的或绝对的。

使用相对时间边界查询

使用绝对时间边界查询

查询不受时间限制的数据

要查询没有时间边界的数据,请在您的 WHERE 子句中不要包含任何基于时间的谓词。如果在 WHERE 子句中没有定义时间范围,则默认时间范围为 Unix 纪元 (1970-01-01T00:00:00Z) 到 现在

查询数据 没有时间限制 可能会返回意外数量的数据。 查询可能需要很长时间才能完成,结果可能会被截断。

SELECT * FROM home

查询特定字段和标签

要查询特定字段,请将它们包含在SELECT子句中。如果查询多个字段或标签,请用逗号分隔每个。如果字段或标签键包含特殊字符或空格或区分大小写,请将键用双引号括起来。

SELECT time, room, temp, hum FROM home

根据标签值查询字段

  • SELECT子句中,包含您想查询的字段和您想根据其建立条件的标签。
  • WHERE子句中,包含将标签标识符与字符串文字进行比较的谓词。使用逻辑运算符将多个谓词连接在一起并应用多个条件。
SELECT * FROM home WHERE room = 'Kitchen'

根据字段值查询积分

  • SELECT 子句中,包括您想要查询的字段。
  • WHERE子句中,包含将字段标识符与值或表达式进行比较的谓词。使用逻辑运算符ANDOR)将多个谓词连接在一起并应用多个条件。
SELECT co, time FROM home WHERE co >= 10 OR co <= -10

别名查询字段和标签

要为您查询的字段和标签创建别名或重命名,请使用 AS 子句。 在您想要别名的标签、字段或表达式之后,传递 AS,后面跟上作为标识符的别名名称(如果别名包含空格或特殊字符,请用双引号 (") 括起来)–例如:

SELECT temp AS temperature, hum AS "humidity (%)" FROM home

InfluxQL中为列定义别名时,使用AS子句和标识符。 在SQL中的列定义别名时,可以使用AS子句来定义别名,但这不是必需的。



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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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

InfluxDB 云端无服务器