influxdb 连续查询使用总结
转载请注明出处:
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 中创建连续查询可以通过以下两个步骤完成:
- 创建
到目标测量的查询。 - 将第一步得到的查询作为连续查询的输入。
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_query的GROUP 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_basic从bus_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 连续查询使用总结的更多相关文章
- InfluxDB学习之InfluxDB连续查询(Continuous Queries)
在上一篇:InfluxDB学习之InfluxDB数据保留策略(Retention Policies) 中,我们介绍了 InfluxDB的数据保留策略,数据超过保存策略里指定的时间之后,就会被删除. 但 ...
- 连续查询(Continuous Queries)
当数据超过保存策略里指定的时间之后,就会被删除.如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价). 这就需要Influx ...
- Flink:动态表上的连续查询
用SQL分析数据流 越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案.其中许多应用程序专注于分析流数据.分析的数据流来源广泛,如数据库交易,点击,传感器 ...
- node连续查询两次数据库返回方式(文档未定)
function db(callback){ var mysql = require('mysql'); var connection = mysql.createConnection({ host ...
- InfluxDB学习系列教程,InfluxDB入门必备教程
nfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 本文是一系列InfluxDB学习教程的目录,现主 ...
- InfluxDB学习之InfluxDB的安装和简介
最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...
- Influxdb原理详解
本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 Infl ...
- 时序数据库InfluxDB使用详解
1 安装配置 这里说一下使用docker容器运行influxdb的步骤,物理机安装请参照官方文档.拉取镜像文件后运行即可,当前最新版本是1.3.5.启动容器时设置挂载的数据目录和开放端口.Influx ...
- (转)InFluxDB数据库使用手册
InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...
- InfluxDB学习之InfluxDB的基本操作| Linux大学
来源地址:https://www.linuxdaxue.com/influxdb-study-series-manual.html 本文属于<InfluxDB系列教程>文章系列,该系列共包 ...
随机推荐
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10)- 从Serial NAND启动
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1xxx系列MCU的Serial NAND启动. 最近越来越多的客户在咨询 i.MXRT1xxx 从 Serial N ...
- 部署 rsyslog 日志服务
ubuntu 服务端 + Centos 客户端 参考文档: ubuntu 20.04 搭建 rsyslog 服务器 CentOS7下搭建Rsyslog Server记录远程主机系统日志
- 关于Linux下服务器MySQL的安装和搭建
一.检测是否已经安装Mysql 检测 # yum list installed | grep mysql //检查安装 # yum -y remove mysql-libs.x86_64 //卸载 / ...
- Redis从入门到放弃(6):持久化
1.引言 Redis作为一种高性能的内存数据存储系统,常被用作缓存.会话存储.消息队列等多种应用场景.然而,由于其数据存储在内存中,一旦发生意外或服务器重启,数据就会丢失.为了保障数据的持久性和安全性 ...
- 使用TypeScript类型注解,编写更干净的JS代码
TypeScript 可以看作是 JavaScript 的超集,不仅包含了 JavaScript 的所有内容,还拓展了语法.规定了类型约束,使得我们可以编写更干净.完整的代码. 类型注解 TypeSc ...
- docker 安装 Influxdb-relay 使用
转载请注明出处: 1.influxdb relay的作用和特性 数据转发:InfluxDB Relay 可以从一个或多个源(input)接收数据,并将其转发到一个或多个目标(output)的 Infl ...
- 虾皮shopee根据ID取商品详情 API 返回值说明
item_get-根据ID取商品详情 注册开通 shopee.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...
- datetime获取当前日期前十二个月份
from dateutil.parser import parse from dateutil.relativedelta import relativedelta # 当前日期前十二个月 time_ ...
- 接口未配置在app.json文件中
微信小程序发布 提示 接口未配置在app.json文件中 狗血 昨天更新 就在app.json中添加 解决问题 "requiredPrivateInfos":[ "ge ...
- No manual entry for ls终极解决办法
No manual entry for ls解决办法,最后一种方法一定能解决你的问题 步骤一:确认man是否已经安装 #which man /usr/bin/man---返回此行,证明已经安装 步骤二 ...