influxdb 时序数据库新建/删除连续查询、数据插入

influxdb 时序数据库新建/删除连续查询

Dbs:{
    
    
      host: "192.168.0.1",
      port: 8086,
      database: "mydb",
      username: "root",
      password: "root"
    }

1、新建连续查询

const Influx = require('influx');
const influx = new Influx.InfluxDB(Dbs)
await influx.createContinuousQuery(<连续查询名称>, <sql>, <时序数据库名>, <执行间隔>)
//连续查询名称 ——> dataanalysis
//sql ——> select count(FYJYL) as nsywzerototal INTO dataanalysis.autogen.dataanalysis FROM mydb.autogen.processdata  where FYJYL = 0 group by time(1d),SBXLH fill(0)
//时序数据库名 ——> mydb
//执行间隔 ——> RESAMPLE EVERY 4h

2、删除连续查询

 const influx = new Influx.InfluxDB(Dbs)
 await influx.dropContinuousQuery(<连续查询名称>, <时序数据库名>)

3、查询

const influx = new Influx.InfluxDB(Dbs)
await influx.query(`select ...`).then(result=>{
    
    })

4、连续查询注意事项

(1)查询的内容字段不能一条连续查询插入到表中时,可以建多个连续查询,但不能含重复的字段,否则重复字段内容会被覆盖;
(2)插入表中的数据若时间与key字段相同时,其内容将被最新数据覆盖,即相同时间的相同key只有一条数据。

5、SQL直接执行

官网传送门:https://docs.influxdata.com/influxdb/v1.7/query_language/continuous_queries/
涉及到INTO知识点

SELECT_clause INTO <插入的表> FROM_clause [WHERE_clause] [GROUP_BY_clause]
#select count(FYJYL) as nsywzerototal INTO dataanalysis.autogen.dataanalysis FROM mydb.autogen.processdata  where FYJYL = 0 group by time(1d),SBXLH fill(0)

新建连续查询

CREATE CONTINUOUS QUERY <连续查询名称> ON <库名>
RESAMPLE EVERY <执行时间间隔> FOR 执行时间范围
BEGIN
  <cq_query>
END

RESAMPLE EVERY 30m FOR 60m ==> 即每隔30分钟计算一次60分钟内的数据

6、可视化新建连续查询

在这里插入图片描述
在这里插入图片描述

7、连续查询执行顺序问题

连续查询创建顺序即连续查询执行顺序,先创建的连续查询先执行;时序数据库持续插入数据,因此统计数据可能与实际存在误差(使用连续查询不可避免)。

8、数据插入

插入表没有将自动创建

influx.writePoints([{
	 measurement: 'table_name',//表名
	 tags:{code:4401},
	 fields: { time:'2022-12-01 14:00:00', value:100.02 } //字段
}])
await influx.query(`select ...`).then(result=>{
	console.log(result) // [{time:'2022-12-01 14:00:00',value:100.02,code:4401}]
})

参考:https://node-influx.github.io/class/src/index.js~InfluxDB.html

猜你喜欢

转载自blog.csdn.net/weixin_44167504/article/details/124091880