执行基本的InfluxQL查询
InfluxQL(Influx 查询语言)是一种类似于 SQL 的查询语言,用于与 InfluxDB 交互并处理时间序列数据。
一个基本的 InfluxQL 查询从 InfluxDB 查询数据通常包括以下子句:
* Required- *
SELECT: 指定要从表中返回的字段、标签和计算,或使用通配符别名(*)选择表中的所有字段和标签。它至少需要一个字段键或通配符别名(*)。有关更多信息,请参见显著的 SELECT 语句行为。 - *
FROM: 指定要查询的 表。 它需要一个或多个以逗号分隔的 度量表达式。 WHERE: 根据 字段值, 标签值或 时间戳过滤数据。仅 返回满足指定条件的数据,例如,在时间范围内、包含特定标签值,或包含超出指定范围的字段值。
结果集
如果至少有一行满足查询,InfluxDB 集群返回查询结果集中的行数据。
如果查询使用 GROUP BY 子句,结果集包括以下内容:
- 查询的
SELECT子句中列出的列 - 一个
time列,其中包含记录或组的时间戳 - 一个
iox::measurement列,包含记录的 table 名称 - 在查询的
GROUP BY子句中列出的列; 结果集中的每一行包含用于分组的值
按组结果列
如果查询使用 GROUP BY 而 WHERE 子句没有按时间过滤,那么
分组基于
默认时间范围。
基本查询示例
在时间边界内查询数据
- 使用
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