执行基本的 InfluxQL 查询
InfluxQL(Influx 查询语言)是一种类似 SQL 的查询语言,用于与 InfluxDB 交互并处理时间序列数据。
InfluxDB v1 到 InfluxDB 3 数据模型
InfluxQL 是围绕 InfluxDB v1 数据模型设计的,但仍可用于查询 InfluxDB 3 Core 中的数据。在使用 InfluxDB 3 Core InfluxQL 实现时,数据模型在以下方面有所不同:
- InfluxDB v1 的 数据库和保留策略组合被合并为单个 InfluxDB 3 数据库实体。
- InfluxDB v1 的 measurement 等同于 InfluxDB 3 的 table。
从 InfluxDB 查询数据的基本 InfluxQL 查询最常包含以下子句:
* 必需- *
SELECT:指定要从表中返回的字段、标签和计算,或使用通配符别名(*)选择表中的所有字段和标签。它至少需要一个字段键或通配符别名(*)。有关更多信息,请参阅SELECT 语句的注意事项。 - *
FROM:指定要从中查询的表。它需要一个或多个逗号分隔的度量表达式。 WHERE:根据字段值、标签值或时间戳过滤数据。仅返回满足指定条件的数据——例如,落在某个时间范围内、包含特定标签值或包含指定范围之外的字段值。
结果集
如果至少有一行满足查询条件,InfluxDB 3 Core 将在查询结果集中返回行数据。如果查询使用了 GROUP BY 子句,结果集将包含以下内容:
- 查询的
SELECT子句中列出的列 - 一个
time列,包含记录或组的时间戳 - 一个
iox::measurement列,包含记录的表名 - 查询的
GROUP BY子句中列出的列;结果集中的每一行都包含用于分组的值
GROUP BY 结果列
如果查询使用了 GROUP BY 且 WHERE 子句没有按时间过滤,则分组将基于默认时间范围。
基本查询示例
查询时间边界内的数据
- 使用
SELECT子句指定要返回的标签和字段。至少指定一个字段键。要返回所有标签和字段,请使用通配符别名(*)。 - 在
FROM子句中指定要查询的表。 - 在
WHERE子句中指定时间边界。包含基于时间的谓词,将time列的值与时间戳进行比较。使用AND逻辑运算符将多个谓词链接在一起。
查询时间边界可以是相对的,也可以是绝对的。
查询没有时间边界的数据
要查询没有时间边界的数据,请不要在 WHERE 子句中包含任何基于时间(time-based)的谓词。如果在 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子句中,包含将字段标识符与值或表达式进行比较的谓词。使用逻辑运算符(AND、OR)将多个谓词链接在一起,并应用多个条件。
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 子句定义别名,但这不是必需的。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。