执行基本的InfluxQL查询
InfluxQL(Influx 查询语言)是一种类似于 SQL 的查询语言,用于与 InfluxDB 交互并处理时间序列数据。
一个基本的 InfluxQL 查询从 InfluxDB 查询数据通常包括以下子句:
* Required- *
SELECT: 指定要从测量中返回的字段、标签和计算,或使用通配符别名 (*) 选择测量中的所有字段和标签。至少需要一个 field key 或通配符别名 (*)。 有关更多信息,请参见 Notable SELECT statement behaviors。 - *
FROM: 指定要查询的 measurement。它需要一个或多个用逗号分隔的 measurement expressions。 WHERE: 根据 字段值, 标签值或 时间戳过滤数据。仅返回满足指定条件的数据,例如,落在 一个时间范围内,包含特定标签值,或包含超出指定范围的字段值。
结果集
如果至少一行满足查询,InfluxDB Cloud Serverless 将在查询结果集中返回行数据。
如果查询使用了 GROUP BY 子句,结果集包括以下内容:
- 查询的
SELECT子句中列出的列 - 一个
time列,其中包含记录或组的时间戳 - 一个
iox::measurement列,包含记录的测量(表)名称 - 查询中
GROUP BY子句列出的列;结果集中的每一行包含用于分组的值
按组结果列
如果查询使用 GROUP BY 并且 WHERE 子句没有按照时间过滤,那么分组将基于 默认时间范围。
基本查询示例
示例数据
以下示例使用了 开始使用家庭传感器数据。 要运行示例查询并返回结果, 写入示例数据 到您的 InfluxDB Cloud 无服务器数据库,然后再运行示例查询。
在时间边界内查询数据
- 使用
SELECT子句来指定要返回的标签和字段。 至少指定一个字段键。 要返回所有标签和字段,请使用通配符别名 (*)。 - 在
FROM子句中指定要查询的测量。 - 在
WHERE子句中指定时间边界。
包含基于时间的谓词,将time列的值与时间戳进行比较。
使用AND逻辑运算符将多个谓词连接在一起。
查询时间边界可以是相对的或绝对的。
查询不受时间限制的数据
要查询没有时间边界的数据,请在您的 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子句中,包含将字段标识符与值或表达式进行比较的谓词。使用逻辑运算符(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子句来定义别名,但这不是必需的。