转载请注明出处:

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的预设时间边界来确定何时执行以及查询中涵盖的时间范围。

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

  当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/

influxdb 连续查询使用总结的更多相关文章

  1. InfluxDB学习之InfluxDB连续查询(Continuous Queries)

    在上一篇:InfluxDB学习之InfluxDB数据保留策略(Retention Policies) 中,我们介绍了 InfluxDB的数据保留策略,数据超过保存策略里指定的时间之后,就会被删除. 但 ...

  2. 连续查询(Continuous Queries)

    当数据超过保存策略里指定的时间之后,就会被删除.如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价). 这就需要Influx ...

  3. Flink:动态表上的连续查询

    用SQL分析数据流 越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案.其中许多应用程序专注于分析流数据.分析的数据流来源广泛,如数据库交易,点击,传感器 ...

  4. node连续查询两次数据库返回方式(文档未定)

    function db(callback){ var mysql = require('mysql'); var connection = mysql.createConnection({ host ...

  5. InfluxDB学习系列教程,InfluxDB入门必备教程

    nfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 本文是一系列InfluxDB学习教程的目录,现主 ...

  6. InfluxDB学习之InfluxDB的安装和简介

    最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...

  7. Influxdb原理详解

    本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 Infl ...

  8. 时序数据库InfluxDB使用详解

    1 安装配置 这里说一下使用docker容器运行influxdb的步骤,物理机安装请参照官方文档.拉取镜像文件后运行即可,当前最新版本是1.3.5.启动容器时设置挂载的数据目录和开放端口.Influx ...

  9. (转)InFluxDB数据库使用手册

    InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...

  10. InfluxDB学习之InfluxDB的基本操作| Linux大学

    来源地址:https://www.linuxdaxue.com/influxdb-study-series-manual.html 本文属于<InfluxDB系列教程>文章系列,该系列共包 ...

随机推荐

  1. 使用DBeaver连接数据库

    下载网站:官网下载 参考链接:使用 DBeaver 连接 OceanBase

  2. 2021-3-29 Enter按下事件

    先在构造器中添加keydown事件 tBoxPsw.KeyDown += TBoxPsw_KeyDown; 在事件中添加按下enter按钮所触发的方法 private void TBoxPsw_Key ...

  3. 重温C#中的值类型和引用类型

    在C#中,数据类型分为值类型和引用类型两种. 引用类型变量存储的是数据的引用,数据存储在数据堆中,而值类型变量直接存储数据.对于引用类型,两个变量可以引用同一个对象.因此,对一个变量的操作可能会影响另 ...

  4. excel:if语句

    IF语法格式: IF(logical_test,value_if_true,value_if_false) 释义:判断一个条件是否满足,如果满足返回一个值,如果不满足则返回另一个值. logical_ ...

  5. 【干货】浅谈如何给.net程序加多层壳达到1+1>2的效果

    软件破解分白盒和黑盒两种方式. 白盒破解:白盒破解是指对软件进行破解时,攻击者可以访问软件的内部结构和源代码.这种破解方式通常发生在软件的开发者.技术人员或软件公司内部.攻击者使用这些详细信息来理解软 ...

  6. UI获取元素的几种方式

    通过浏览器驱动获取页面元素的8种方式. 定位方法: 通过webdriver对象的find_element方法 通过 id获取元素 el = driver.find_element(By.ID,'id' ...

  7. VS2015项目.net-framework-4.5.2升级或新建项目无法选择framework 4.6.2(解决办法)

    VS2015里面没有.NET Framework 4.6.2 VS2015默认安装的目标框架最高是.NET Framework 4.6.1,但是我的项目里面某些NuGet软件包更新需要依赖.NET F ...

  8. openNebula集群搭建

    openNebula集群搭建 目录 openNebula集群搭建 OpenNebula概述 环境介绍及部署前准备 1. 安装步骤 1.关闭防火墙 2.配置epel源地和opennebula源 3.安装 ...

  9. 【Qt6】列表模型——抽象基类

    列表模型(Item Model),老周没有翻译为"项目模型",因为 Project 和 Item 都可以翻译为"项目",容易出现歧义.干脆叫列表模型.这个模型也 ...

  10. Solution -「营业」「ABC 170D」Not Divisible

    Description Link. 给出一个长度为 \(n\) 的序列 \(a\),求 \(\sum_{i=1}^{n}[\forall j\in[1,i)\cup(i,n],a_{j}\nmid a ...