度娘教我influxdb,先搞一波在补理论

news/2024/11/22 18:06:06/

InfluxDb中的数据查询语法where子句

公司用的时序性数据库是influxdb,但是确实接触有点少。
心里话: 就是没接触过,度娘教教我。。。。
我咋回呢,现学吧,都是数据库,天下乌鸦一般黑

然后就哟了以下:
本节讲解where子句,注意,查询语言是大小写无关的哈。


1、influxdb的where语法

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> […]]

  • 可以有多个条件表达式conditional_expression
  • 条件表达式之间可以有AND和OR

2、语法描述

WHERE子句后可以写写field,tag和timestamp。

conditional_expressions.


3、where 子句中包含fields时

where子句语法:

field_key [‘string’ | boolean | float | integer]

WHERE子句支持field value是字符串,布尔型,浮点数和整数这些类型。

WHERE子句中单引号来表示字符串字段值。不加引号或者用双引号,不会返回结果,也不会返回错误。

支持的操作符operator如下:

  • = 等于
  • <> 不等于
  • != 不等于
  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等于

4、where 子句中包含tags时

tag_key [‘tag_value’]

WHERE子句中的用单引号来把tag value引起来。具不加引号或者用双引号,不会返回结果,也不会返回错误。

支持的操作符:

  • = 等于
  • <> 不等于
  • != 不等于

5、timestamps

对于大多数SELECT语句,默认时间范围为UTC的1677-09-21 00:12:43.1452241942262-04-11T23:47:16.854775806Z。 对于只有GROUP BY time()子句的SELECT语句,默认时间范围在UTC的1677-09-21 00:12:43.145224194now()之间。


6、Where语句的例子


6.1 例一:查询有特定field的key value的数据

use NOAA_water_database
SELECT * FROM “h2o_feet” WHERE “water_level” > 8
name: h2o_feet
--------------
time level description location water_level
2015-08-18T00:00:00Z between 6 and 9 feet coyote_creek 8.12
2015-08-18T00:06:00Z between 6 and 9 feet coyote_creek 8.005
[…]
2015-09-18T00:12:00Z between 6 and 9 feet coyote_creek 8.189
2015-09-18T00:18:00Z between 6 and 9 feet coyote_creek 8.084

这个查询将会返回measurement为h2o_feet,字段water_level的值大于8的数据。


6.2 例二:查询有特定field的key value为字符串的数据

SELECT * FROM “h2o_feet” WHERE “level description” = ‘below 3 feet’
name: h2o_feet
--------------
time level description location water_level
2015-08-18T00:00:00Z below 3 feet santa_monica 2.064
2015-08-18T00:06:00Z below 3 feet santa_monica 2.116
[…]
2015-09-18T14:06:00Z below 3 feet santa_monica 2.999
2015-09-18T14:36:00Z below 3 feet santa_monica 2.907

运行例子

该查询从h2o_feet返回数据,其中level description等于below 3 feet。InfluxQL在WHERE子句中需要单引号来将字符串field value引起来。

field value用双引号是一种错误哦,不会返回数据哦:

influx-where


6.3 例三:查询有特定field的key value并且带计算的数据

> SELECT * FROM “h2o_feet” WHERE “water_level” + 2 > 11.9
name: h2o_feet
--------------
time level description location water_level
2015-08-29T07:06:00Z at or greater than 9 feet coyote_creek 9.902
2015-08-29T07:12:00Z at or greater than 9 feet coyote_creek 9.938
2015-08-29T07:18:00Z at or greater than 9 feet coyote_creek 9.957
2015-08-29T07:24:00Z at or greater than 9 feet coyote_creek 9.964
2015-08-29T07:30:00Z at or greater than 9 feet coyote_creek 9.954
2015-08-29T07:36:00Z at or greater than 9 feet coyote_creek 9.941
2015-08-29T07:42:00Z at or greater than 9 feet coyote_creek 9.925
2015-08-29T07:48:00Z at or greater than 9 feet coyote_creek 9.902
2015-09-02T23:30:00Z at or greater than 9 feet coyote_creek 9.902

运行例子

该查询从h2o_feet返回数据,其字段值为water_level加上2大于11.9。


6.4 例四:查询有特定tag的key value的数据

SELECT “water_level” FROM “h2o_feet” WHERE “location” = ‘santa_monica’
name: h2o_feet
--------------
time water_level
2015-08-18T00:00:00Z 2.064
2015-08-18T00:06:00Z 2.116
[…]
2015-09-18T21:36:00Z 5.066
2015-09-18T21:42:00Z 4.938

该查询从h2o_feet返回数据,其中tag locationsanta_monica。InfluxQL需要WHERE子句中tag的过滤带单引号。

注意:时间无论你指定没有,都是会显示的。


6.5 例五:查询有特定tag的key value以及特定field的key value的数据

SELECT “water_level” FROM “h2o_feet” WHERE “location” <> ‘santa_monica’ AND (water_level < -0.59 OR water_level > 9.95)
name: h2o_feet
--------------
time water_level
2015-08-29T07:18:00Z 9.957
2015-08-29T07:24:00Z 9.964
2015-08-29T07:30:00Z 9.954
2015-08-29T14:30:00Z -0.61
2015-08-29T14:36:00Z -0.591
2015-08-30T15:18:00Z -0.594

该查询从h2o_feet中返回数据,其中tag location设置为santa_monica,并且field water_level的值小于-0.59或大于9.95。 WHERE子句支持运算符ANDOR,并支持用括号分隔逻辑。


6.6 例六:根据时间戳来过滤数据

SELECT * FROM “h2o_feet” WHERE time > now() - 7d

该查询返回来自h2o_feet,该measurement在过去七天内的数据。

你也许什么也查不出来,因为数据库的时间远远大于7天。减去500d,可能会有值。


7、WHERE子句常见的问题


7.1 问题一:WHERE子句返回结果为空

在大多数情况下,这个问题是tag value或field value缺少单引号的结果。具有无引号或双引号tag value或field value的查询将不会返回任何数据,并且在大多数情况下不会返回错误。

下面的代码块中的前两个查询尝试指定tag value为santa_monica,没有任何引号和双引号。那些查询不会返回结果。 第三个查询单引号santa_monica(这是支持的语法),并返回预期的结果。

SELECT “water_level” FROM “h2o_feet” WHERE “location” = santa_monica
> SELECT “water_level” FROM “h2o_feet” WHERE “location” = “santa_monica”
> SELECT “water_level” FROM “h2o_feet” WHERE “location” = ‘santa_monica’
name: h2o_feet
--------------
time water_level
2015-08-18T00:00:00Z 2.064
[…]
2015-09-18T21:42:00Z 4.938

下面的代码块中的前两个查询尝试指定field字符串为at or greater than 9 feet,没有任何引号和双引号。第一个查询返回错误,因为field字符串包含空格。 第二个查询不返回结果。 第三个查询单引号at or greater than 9 feet(这是支持的语法),并返回预期结果。

> SELECT “level description” FROM “h2o_feet” WHERE “level description” = at or greater than 9 feet
ERR: error parsing query: found than, expected ; at line 1, char 86
> SELECT “level description” FROM “h2o_feet” WHERE “level description” = “at or greater than 9 feet”
> SELECT “level description” FROM “h2o_feet” WHERE “level description” = ‘at or greater than 9 feet’
name: h2o_feet
--------------
time level description
2015-08-26T04:00:00Z at or greater than 9 feet
[…]
2015-09-15T22:42:00Z at or greater than 9 feet

http://www.ppmy.cn/news/69634.html

相关文章

uniapp 用css画五边形(app 小程序)

效果图 css .scoreLabel{ background: $yxs-theme-color; width: 64rpx; height: 69rpx; line-height: 32rpx; font-size: 28rpx; font-family: DINPro; f…

虚拟机02 mysql安装和配置

第一步&#xff1a;在课程资料中&#xff0c;找到数据库安装文件&#xff0c;然后上传安装文件到Linux中。文件位置如图所示&#xff1a; 第二步&#xff1a;打开Linux&#xff0c;到工作目录中创建一个mysql目录&#xff0c;然后将安装文件上传到mysql中 第三步&#xff1a…

前段时间公司招人,面了一个要23K的,一问自动化只会点皮毛···

前段时间公司要招2个自动化测试&#xff0c;同事面了几十个候选人&#xff0c;发现了一个很奇怪的现象&#xff0c;面试的时候&#xff0c;如果问的是框架api、脚本编写这些问题&#xff0c;基本上个个都能对答如流&#xff0c;等问到实际项目的时候&#xff0c;类似“怎么从0开…

服务网关Gateway

前言 API 网关出现的原因是微服务架构的出现&#xff0c;不同的微服务一般会有不同的网络地址&#xff0c;而外部客户端可能需要调用多个服务的接口才能完成一个业务需求&#xff0c;如果让客户端直接与各个微服务通信&#xff0c;会有以下的问题&#xff1a; 破坏了服务无状态…

深度解析Linux kernel同步机制(上篇)

在现代操作系统里&#xff0c;同一时间可能有多个内核执行流在执行&#xff0c;因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问&#xff0c;尤其是在多处理器系统上&#xff0c;更需要一些同步机制来同步不同处理器上的执行单元对共享…

存储程序

有时候&#xff0c;为了完成一个常用的功能需要执行多条语句&#xff0c;而每次都在客户端中一条一条的输入这么多语句是很烦的。而存储程序就可以解决这个烦恼&#xff0c;它可以封装很多语句&#xff0c;然后为用户提供一种简单 方式来调用这个程序。 存储程序分为存储历程&…

《Linux0.11源码解读》理解(三) 执行setup

上一节的最后jmpi把cs:ip设置为0x9020:0000。于是CPU开始执行setup&#xff0c;它的作用是获取机器系统数据至内存&#xff0c;关中断并挪动system&#xff0c;为32位模式转换做准备。 加载系统信息至内存 同样是调用BISO中断&#xff0c;寄存器作为入参和返回值&#xff0c;…

springboot与springcloud版本关系,BeanCreationException: Error creating bean with name

添加注解EnableFeignClients后报错&#xff1a; org.springframework.beans.factory.BeanCreationException: Error creating bean with name configurationPropertiesBeans defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertie…