influxdb 时序数据库知识点个人记录合集

influxdb 时序数据库知识点个人记录合集

官网传送门:https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/
InfluxDB Studio:https://github.com/CymaticLabs/InfluxDBStudio
中文文档:https://jasper-zhang1.gitbooks.io/influxdb/content/

1、influxdb支持的运算符
MeaningOperator
等于=
不等于!=<>
大于>
大于等于>=
小于<
小于等于<=
2、group by 分组

与mysql的分组规则基本一致,值得注意的点是:
(1)influxdb中使用 time(),如 group by time(1d) 为以1天为分组
(2)使用 group by时分组的字段会连同查询的字段一起输出,而查询的字段只能是聚合函数
如下:

select count(CJSJ) AS total,count(LJNSXH) as ljnsxhtotal  FROM tableName GROUP BY time(1d), SBXLH fill(0)

输出:total,ljnsxhtotal,SBXLH,time

3、聚合函数

(1)influxdb中使用聚合函数与mysql存在差异,influxdb中的聚合函数只能使用基础的功能,如count(1)不可使用,可使用count(字段) 返回字段有数据的总条数,不能使用count(time)
(2)聚合函数内加条件
如:count(字段=0 or NULL)sum(字段+字段)sum(CASE when online = 1 then 1 else 0 end)等,这些在influxdb中都不具备这种功能,需要加条件只能在where添加筛选

官网:https://docs.influxdata.com/influxdb/v1.7/flux/guides/group-data/

4、空数据处理 fill(),相当于mysql的IFNULL的作用,但不能指定字段

给空数据赋予某个值,如下,给是空值的赋予0(可以赋予其它值,如-1、2),只能位于sql所有条件之后

select * from tableName fill(0)

官网:https://docs.influxdata.com/influxdb/v1.7/flux/guides/fill/

5、返回第一条/最新一条非空数据

FIRST()/LAST()返回按时间排序的第一条/最新一条非空数据
(1)返回第一条数据 first(time)
(2)返回最新一条数据,last(time)
如下,返回采集时间最新的一条数据:

SELECT LAST("CJSJ")  AS "CJSJ",SBXLH FROM "processdata"  group by "SBXLH"
// or
SELECT LAST("CJSJ")  AS "CJSJ",COUNT(CJSJ) AS total FROM "processdata" 
6、排序 order by time desc

时序数据库中的排序只能用于time 进行排序

7、时间查询
意义符号
微秒u or µ
毫秒ms
s
m
h
d
w

(1)查询过去七天的数据

select * from tableName where time > now()-7d

(2)查询过去5分钟的数据

select * from tableName where time > now()-5m

(3)查询昨天的数据
使用 new Date().getTime() 的前十位数,time的时间格式为2022-04-13T02:33:34.000000001z

select * from tableName where time >= 1649865600s and time <= 1649951999s

也可以使用的格式为

select * from tableName where time >= '2022-04-13T16:00:00Z' and time <= '2022-04-14T15:59:59Z'

查询昨天与查询过去一天的时间范围是不一样的,查询过去一天的数据当前时间往前24小时

8、终端操作influxdb数据库

已安装influxdb的前提下
(1)连接

influx

在这里插入图片描述

(2)用户登录

auth

输入账号密码
在这里插入图片描述
(3)查看数据库

show databases

在这里插入图片描述
(4)切换数据库

use mydb

(5)查看连续查询

show continuous queries

(6)查询

select * from tables
9、连续查询

influxdb 时序数据库新建/删除连续查询、数据插入-传送门:https://blog.csdn.net/weixin_44167504/article/details/124091880?spm=1001.2014.3001.5502

10、使用JWT令牌进行身份验证

1、时序数据库配置文件(.config/.conf)中添加自定义的共享密钥,密码字符串越长,则它越安全,默认为空,空时不进行jwt验证

[http]
  shared-secret = "my super secret pass phrase"

2、使用 jsonwebtoken 生成令牌

const jwt = require('jsonwebtoken');
let secretKey = "my super secret pass phrase" // 公用秘钥
let token = jwt.sign({ udb: 'something' }, secretKey, { expiresIn: '1m' })

3、连接查询

const reuqest = require("request")
let host='127.0.0.1',
	port='8086',
	database='dbname',
	query='show databases'
// 使用账号密码查询 http://${host}:${port}/query?db=${db.database}&u=${username}&p=${password}&precision=s
let url = `http://${host}:${port}/query?db=${database}&precision=s`;
return new Promise(res => {
    request(
        {
            url: url,
            method: 'POST',
            headers: { // 使用账号密码查询时不需要配置
                "Content-Type": "multipart/form-data;",
                "Authorization": "Bearer " + token
            },
            formData: { q: query },
            timeout: 30000 //30秒超时
        },
        function (error, response, body) {
         // body -> string Object
         // let data = JSON.parse(body)
         // res(data);
     }
   );
});

正常返回格式:
在这里插入图片描述
4、遇到 "error":"token used befored issued",令牌校验时间早于签发时间,问题:时序数据库服务器的时间慢于请求的服务器的时间,解决:修改时间。
参考:
1、https://influxdb-v1-docs-cn.cnosdb.com/influxdb/v1.8/administration/authentication_and_authorization/
2、https://docs.influxdata.com/influxdb/v1.8/administration/authentication_and_authorization/#generate-your-jwt-token

11、模糊查询 之 like,not like

influxdb中没有like ,需要使用正则匹配查询,如:
name like '%我' => name = ~/^我/
name not like '%我' => name !~/^我/
1、模糊条件开头

select * from table where  name = ~/^/

2、模糊条件结尾

select * from table where  name = ~/我$/

3、确切条件

select * from table where  name = ~//
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值