一、连续查询语法
https://docs.influxdata.com/influxdb/v1.5/query_language/continuous_queries/
连续查询:可以将基础表的数据,按照需要粒度统计到另外一张表中
一、新建连续查询(需要管理员权限)语法:
CREATE CONTINUOUS QUERY
[RESAMPLE [EVERY
BEGIN SELECT
FROM
END
注释:
stuff 原料,材料,填充物
interval 幕间休息,间隔
查询部分被 CREATE CONTINUOUS QUERY [...] BEGIN 和 END 所包含,主要的逻辑代码也是在这一部分。
示例
> CREATE CONTINUOUS QUERY cq_30m ON test BEGIN SELECT mean(used) INTO mem_used_30m FROM mem GROUP BY time(30m) END
示例在test库中新建了一个名为 cq_30m 的连续查询,每三十分钟取一个used字段的平均值,加入 mem_used_30m 表中。使用的数据保留策略都是 default。
CREATE CONTINUOUS QUERY rpcmon_statis_module ON rpcmon BEGIN SELECT sum("total"), module INTO trace_stats_module FROM trace_stats GROUP BY time(1m) END
CREATE CONTINUOUS QUERY rpcmon_statis ON rpcmon BEGIN SELECT mean(*),module INTO trace_stats_module_1min FROM trace_stats GROUP BY time(1m), module END
1)显示所有已存在的连续查询
查询所有连续查询可以使用如下语句:
> SHOW CONTINUOUS QUERIES
可以看到其连续查询的名称以及 语句等信息。
2)删除Continuous Queries
删除连续查询的语句如下:
DROP CONTINUOUS QUERY
实战demo
创建:
CREATE CONTINUOUS QUERY "cq_trace_stats" ON "rpcmon" BEGIN SELECT mean("total") INTO "trace_stats_1min" FROM "trace_stats" GROUP BY time(1m) END
CREATE CONTINUOUS QUERY "cq_trace_stats" ON "rpcmon" BEGIN SELECT mean("total") INTO "trace_stats_1min" FROM "trace_stats" GROUP BY time(1m) END
CREATE CONTINUOUS QUERY cq_trace_stats ON rpcmon BEGIN SELECT mean(*) INTO trace_stats_OneMin FROM rpcmon.autogen.trace_stats GROUP BY time(1m),module,interf END
二、指定连续查询的时间范围
可以使用RESAMPLE FOR 关键词来指定连续查询的时间范围,比如,每次执行都对1小时内的数据进行连续查询:
> CREATE CONTINUOUS QUERY vampires_1 ON transylvania RESAMPLE FOR 60m BEGIN SELECT count(dracula) INTO vampire_populations_1 FROM raw_vampires GROUP BY time(30m) END
三、指定连续查询的执行频次
可以使用RESAMPLE EVERY 关键词来指定连续查询的执行频次,比如,指定连续查询的执行频次为每15m执行一次:
> CREATE CONTINUOUS QUERY vampires ON transylvania RESAMPLE EVERY 15m BEGIN SELECT count(dracula) INTO vampire_populations FROM raw_vampires GROUP BY time(30m) END
这样,连续查询会每隔15m执行一次。
四、同时指定连续查询的范围和频次
将RESAMPLE FOR 和 EVERY关键词同时使用,可以同时指定连续查询的范围和频次,如下:
> CREATE CONTINUOUS QUERY vampires_2 ON transylvania RESAMPLE EVERY 15m FOR 60m BEGIN SELECT count(dracula) INTO vampire_populations_2 FROM raw_vampires GROUP BY time(30m) END
这个语句指定连续查询每15m执行一次,每次执行的范围为60m。
踩坑:当原始表的数据不是实时的时候,比如有延迟,那么连续查询就不会生效,也就不会有数据进入到连续查询的target表里面
作者:米茶饿了
链接:https://www.jianshu.com/p/830e42257473
来源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
二、基础查询
influxdb 中文文档地址:https://jasper-zhang1.gitbooks.io/influxdb/content/Query_language/data_exploration.html
1) 时间倒序,限制条数
select * from trace_stats_1min ORDER BY time DESC limit 2
2) 如果infuxdb显示的是utc时间格式,则使用以下方式根据时间去查询数据
调整时区
如果需要使用北京时间(东八区),可以在SQL中使用tz关键字:
select *fromdisk where time >='2018-11-23 14:30:39'andtime <='2018-11-23 14:32:32 'tz('Asia/Shanghai')
3)查询tag
SHOW TAG KEYS
4)查询field
SHOW FIELD KEYS