首页 > 其他分享 >influxdb 连续查询使用总结

influxdb 连续查询使用总结

时间:2023-11-29 12:32:03浏览次数:42  
标签:总结 GROUP 间隔 influxdb 查询 time CQ now

转载请注明出处:

1.定义:

  InfluxDB 连续查询(Continuous Query)是一种自动化查询类型,该查询会根据定义的时间间隔定期运行,并将结果存储在新的目标测量中。这样的查询通常用于处理大量时间序列数据。

2.基本语法

  使用语法格式:

CREATE CONTINUOUS QUERY <cq_name> ON <db_name>
BEGIN
  SELECT <function>(<column>) INTO <target_measurement> FROM <source_measurement>
  WHERE <time_clause> GROUP BY <tag_key>
END

其中:

  • <cq_name>:为连续查询指定一个名称
  • <db_name>:为数据库指定一个名称
  • <function>:函数必须是 mean、sum、min、max 或 count 的其中之一
  • <column>:要执行聚合操作的列名
  • <target_measurement>:新创建的目标测量名称
  • <source_measurement>:源测量名称
  • <time_clause>:指定时间范围的语句,可以包含 WHERE time > now() - <duration> 等
  • <tag_key>:可选参数,按照此 tag 进行分组操作

3.使用

  在 InfluxDB 中创建连续查询可以通过以下两个步骤完成:

  1. 创建目标测量的查询。
  2. 将第一步得到的查询作为连续查询的输入。

4.使用场景

  采样和数据保留

使用CQ与InfluxDB的保留策略(RP)来减轻存储问题。结合CQ和RP自动将高精度数据降低到较低的精度,并从数据库中移除可分配的高精度数据。

  预先计算昂贵的查询

通过使用CQ预先计算昂贵的查询来缩短查询运行时间。使用CQ自动将普通查询的高精度数据下采样到较低的精度。较低精度数据的查询需要更少的资源并且返回更快。

  替换HAVING子句

InfluxQL不支持HAVING子句。通过创建CQ来聚合数据并查询CQ结果以达到应用HAVING子句相同的功能。

5.查看和删除sql

  查看连续查询

SHOW CONTINUOUS QUERIES

  删除连续查询:

  从一个指定的database删除CQ:

DROP CONTINUOUS QUERY <cq_name> ON <database_name>

DROP CONTINUOUS QUERY返回一个空的结果。

  修改连续查询:

    根据官网的介绍,创建CQ之后,无法进行更改,如果需要更改需要drop掉之后重新create。

6.运行时间点以及覆盖的时间范围

  CQ对实时数据进行操作。他们使用本地服务器的时间戳,GROUP BY time()间隔和InfluxDB的预设时间边界来确定何时执行以及查询中涵盖的时间范围。

cq_queryGROUP BY time()间隔相同的间隔执行,并且它们在InfluxDB的预设时间边界开始时运行。如果GROUP BY time()间隔为1小时,则CQ每小时开始执行一次。

now()now()减去GROUP BY time()间隔的时间范围运行单个查询。 如果GROUP BY time()间隔为1小时,当前时间为17:00,查询的时间范围为16:00至16:59999999999。

自动采样数据

使用简单的CQ自动从单个字段中下采样数据,并将结果写入同一数据库中的另一个measurement。

CREATE CONTINUOUS QUERY "cq_basic" ON "transportation"
BEGIN
  SELECT mean("passengers") INTO "average_passengers" FROM "bus_data" GROUP BY time(1h)
END

以上示例使用数据库transportation中的示例数据。measurementbus_data数据存储有关公共汽车乘客数量和投诉数量的15分钟数据:

  cq_basicbus_data中计算乘客的平均小时数,并将结果存储在数据库transportation中的average_passengers中。

  cq_basic以一小时的间隔执行,与GROUP BY time()间隔相同的间隔。 每个小时,cq_basic运行一个单一的查询,覆盖了now()now()减去GROUP BY time()间隔之间的时间范围,即now()now()之前的一个小时之间的时间范围。

7.使用示例:

  假设我们有一个名为 cpu_usage 的测量,其中包含了多个 tag 和 field,我们需要将其聚合并写入一个新的测量 cpu_usage_per_hour 中。  

CREATE CONTINUOUS QUERY "cq_cpu_usage" ON "mydb"
BEGIN
  SELECT MEAN("value") INTO "cpu_usage_per_hour" FROM "cpu_usage"
  WHERE time > now() - 1h GROUP BY time(1h), "host"
END

  该连续查询会计算最近一小时内 cpu_usage 测量的平均值,并按照每小时以及 host 进行分组,结果存储在 cpu_usage_per_hour 测量中。

  可以使用以下命令查看已创建的连续查询列表:

SHOW CONTINUOUS QUERIES

 8.官网链接

  https://docs.influxdata.com/influxdb/v1/query_language/continuous_queries/

 



标签:总结,GROUP,间隔,influxdb,查询,time,CQ,now
From: https://blog.51cto.com/u_15535797/8614481

相关文章

  • elasticsearch在Java中查询指定列的方法
     背景ES在查询时如果数量太多,而每行记录包含的字段很多,那就会导致超出ES的查询上线,默认是100MB,但是很多场景下我们只需要返回特定的字段即可,那么如何操作呢。主要代码@AutowiredprivateRestHighLevelClientclient;publicList<Map<String,Object>>search(Stringindex){......
  • 分页查询在某些场景下引发的数据漏处理问题
    背景问题描述假设有一个表字段statues,我们分页获取数据。status初始状态为1,我们分批获取数据,每一批获取1000,对数据进行处理,如果处理成功就更新status为2,否则不更新。注意事项:分页循环查询满足条件的数据然后进行处理,通过PageHelper或者直接使用“limitstatIndex,pageSize”来分页......
  • RestClient查询文档
    前面我们已经实现利用DSL实现文档查询和后续结果处理,下面我们利用Java RestClient实现前面的功能一、快速入门1.1.基本案例演示我们通过match_all来演示下基本的APl,先看请求DSL的组织:查询所有的信息如下:@SpringBootTestpublicclassHotelSearchTests{//创建成员变量,保存......
  • Golang Gin 获取Restful参数、URL查询参数,Form 表单参数,JSON格式参数
    前言http请求中,可以通过URL查询参数提交数据到服务器,可以通过post的json方式,还有一直方式就是Form表单。Form表单相比URL查询参数,用户体验好,可以承载更多的数据,尤其是文件上传时,特别方便。这里推荐飞雪无情的博客;写了一些列的gin的使用教程,很时候新手学习如果想对gin有一个完整......
  • SpringBoot JPA实践之EntityManage查询返回自定义DTO entityManager.createNativeQuer
    SpringBootJPA实践之EntityManage查询返回自定义DTOentityManager.createNativeQuery(sql)  在很多时候我更喜欢随意组合查询出来返回一个DTO对象的实现,JPA提供的多数查询均以返回Entity居多,它提供的EntityManager对象可以实现将SQL语句查询的结果转换为自定义DTO对象(这与......
  • Linux课堂知识总结5
    在这节课的学习中,我知道了Linux系统进程的概念程序(program)是一个普通文件,是为了完成特定任务而准备好的指令序列与数据的集合,这些指令和数据以“可执行映像”的格式保存在磁盘中。进程(process)是一个已经开始执行但还没终止的程序实例。Linux系统下使用ps命令可以查看到当前正......
  • Linux课堂知识总结6
    在这节课的学习中,我了解了linux标准输入输出:    程序:指令+数据     程序:IO可用于输入的设备:文件,键盘设备,文件系统上的常规文件,网卡等;可用于输出的设备:文件,显示器,文件系统上的常规文件,网卡等,程序的数据流有三种:    输入的数据流:<-- 标准输入(stdin),键盘......
  • 2023年11月28日总结
    更好的观看总结听说明天就要有省选模拟了,哇酷哇酷。今天还是复习计算几何,还是很有难度的!今天做了一孔之见,最小圆覆盖,还有圆的面积并。复习了一下[[K-DTree]],看了一下书。收获很多,那个自适应辛普森很有趣呢。就这样吧!哈哈。细节没有什么好说的呢,感觉。一孔之见就那个每条边来......
  • 每日总结
    今日收获写完了软件构造实验一和实验二,都挺简单的,反正,成就感挺大的吧~~~在写实验三,学习JFinal框架;复习一下大数据的相关知识;明天预计复习英语六级;希望昨天剩下的东西能弄完~~~......
  • mysql语句查询最大值并获取
    publicintexadd(examexam)throwsException{Connectionconnection=DBUtil.dbCon();Stringsql="selectmax(eid)eidfromjuan";PreparedStatementpstmt=null;......