InfluxQL是一种类似于SQL的查询语言,用于与InfluxDB进行交互。它经过精心设计,可以使来自其他SQL或类似SQL环境的用户熟悉,同时还提供特定于存储和分析时间序列数据的功能。
InfluxQL的SELECT语句遵循SQL SELECT语句的形式:
SELECT <stuff> FROM <measurement_name> WHERE <some_conditions>
WHERE是可选的。
要在上面的部分中获取InfluxDB输出,请输入:
SELECT * FROM "foodships"
如果您只想查看有关该行的数据Saturn
,请输入:
SELECT * FROM "foodships" WHERE "planet" = 'Saturn'
如果您想Saturn在2015年4月16日世界标准时间12:00:01
之后查看行星的数据,请输入:
SELECT * FROM "foodships" WHERE "planet" = 'Saturn' AND time > '2015-04-16 12:00:01'
如上面的示例所示,InfluxQL允许您在WHERE子句中指定查询的时间范围。您可以使用日期时间字符串,这些日期时间字符串用单引号引起来,其格式为YYYY-MM-DD HH:MM:SS.mmm
(mmm是毫秒,是可选的,还可以指定微秒或纳秒)。您还可以使用相对时间now()来引用服务器的当前时间戳:
SELECT * FROM "foodships" WHERE time > now() - 1h
该查询foodships以时间戳记比服务器当前时间减去一小时新的量度输出数据。用于指定持续时间的选项now()
有:
格式 | 单位 |
---|---|
ns | 纳秒 |
u或µ | 微秒 |
ms | 毫秒 |
s | 秒 |
m | 分钟 |
H | 小时 |
d | 天 |
w | 周 |
InfluxQL还支持正则表达式,表达式,SHOW语句和GROUP BY语句中的算术运算。
InfluxQL功能包括
COUNT
,MIN
,MAX
,MEDIAN
,DERIVATIVE
等等。查询中的基本计算
SELECT声明支持使用基本数学运算符,如+,-,/,*,(),等。
-- Add two field keys
SELECT field_key1 + field_key2 AS "field_key_sum" FROM "measurement_name" WHERE time < now() - 15m
-- Subtract one field from another
SELECT field_key1 - field_key2 AS "field_key_difference" FROM "measurement_name" WHERE time < now() - 15m
-- Grouping and chaining mathematical calculations
SELECT (field_key1 + field_key2) - (field_key3 + field_key4) AS "some_calculation" FROM "measurement_name" WHERE time < now() - 15m
- 计算查询中的百分比
使用基本的数学函数,您可以通过将一个字段值除以另一字段值并将结果乘以100来计算百分比:
SELECT (field_key1 / field_key2) * 100 AS "calculated_percentage" FROM "measurement_name" WHERE time < now() - 15m
- 使用聚合函数计算百分比
如果在百分比计算中使用汇总函数,则必须使用汇总函数引用所有数据。 您不能混合使用汇总数据和非汇总数据。
所有聚合功能都需要一个GROUP BY time()
子句,该子句定义将数据点分组和聚合的时间间隔。
SELECT (sum(field_key1) / sum(field_key2)) * 100 AS "calculated_percentage" FROM "measurement_name" WHERE time < now() - 15m GROUP BY time(1m)