执行基本的 InfluxQL 查询
InfluxQL(Influx 查询语言)是一种类似于 SQL 的查询语言,用于与 InfluxDB 交互并处理时间序列数据。
一个基本的 InfluxQL 查询,通常查询 InfluxDB 中的数据,包括以下子句
* 必需的- *
SELECT
:指定从 表 中返回的字段、标签和计算,或者使用通配符别名(*
)从表中选择所有字段和标签。它需要至少一个 字段键 或通配符别名(*
)。有关更多信息,请参阅 显著的 SELECT 语句行为。 - *
FROM
:指定要查询的 表。它需要至少一个以逗号分隔的 测量表达式。 WHERE
:根据 字段值、标签值 或 时间戳 过滤数据。仅返回满足指定条件的数据——例如,在时间范围内,包含特定的标签值或包含超出指定范围的字段值。
结果集
如果至少有一行满足查询条件,InfluxDB 集群将返回查询结果集中的行数据。如果查询使用了 GROUP BY
子句,结果集包括以下内容:
- 查询
SELECT
子句中列出的列 - 包含记录或分组时间戳的
time
列 - 包含记录 表 名的
iox::measurement
列 - 查询
GROUP BY
子句中列出的列;结果集中的每一行都包含用于分组的值
GROUP BY
结果列
如果查询使用了 GROUP BY
且 WHERE
子句未按时间过滤,则分组基于 默认时间范围。
基本查询示例
示例数据
以下示例使用了 入门家居传感器数据。在运行示例查询并返回结果之前,请先将示例数据写入到您的 InfluxDB 集群数据库中。
查询时间边界内的数据
- 使用
SELECT
子句指定要返回的标签和字段。指定至少一个字段键。要返回所有标签和字段,请使用通配符别名(*
)。 - 在
FROM
子句中指定要查询的 表。 - 在
WHERE
子句中指定时间边界。包括比较time
列值与时间戳的时间相关谓词。使用AND
逻辑运算符将多个谓词连接起来。
查询时间边界可以是相对的或绝对的。
查询无时间边界的数
要查询无时间边界的数,不要在 WHERE
子句中包含任何基于时间的时间谓词。如果没有在 WHERE
子句中定义时间范围,则默认时间范围是 Unix 纪元(1970-01-01T00:00:00Z
)到 now。
查询无时间边界的数据可能会返回意外数量的数据。查询可能需要很长时间才能完成,并且结果可能会被截断。
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
这个页面有用吗?
感谢您的反馈!