Influxdb 得模糊查询总结

news/2025/9/22 0:10:43/文章来源:https://www.cnblogs.com/zjdxr-up/p/19104412

InfluxDB 模糊查询完整总结与示例(修正版)

📊 查询方式全面总结(InfluxQL)

1. 精确匹配(最佳性能)

-- 单值精确匹配
WHERE routername = 'NJ-MAIPU-1'-- 多值精确匹配(使用OR)
WHERE routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02'

2. 基础模糊匹配(简洁写法)

-- 包含匹配
WHERE routername =~ /MAIPU/
WHERE host =~ /web/-- 等同于明确写法
WHERE routername =~ /.*MAIPU.*/

3. 标准模式匹配(明确范围)

-- 开头匹配
WHERE routername =~ /^NJ-.*/-- 结尾匹配
WHERE routername =~ /.*-R01$/-- 包含匹配(明确写法)
WHERE routername =~ /.*MAIPU.*/

4. 多值组合匹配(高效多选)

-- 多值或匹配
WHERE routername =~ /(MAIPU|SCT|CORE)/-- 精确多值匹配
WHERE routername =~ /^(NJ-MAIPU-1|NJ-SCT-R02)$/

5. 字符范围匹配

-- 数字匹配
WHERE routername =~ /[0-9]/-- 字母匹配
WHERE routername =~ /[A-Z]/-- 组合匹配
WHERE routername =~ /[A-Z][0-9]/  -- 如A1, B2等

⚠️ 重要注意事项

InfluxQL 不支持的特性:

-- 以下语法会报错!
WHERE routername IN ('NJ-MAIPU-1', 'NJ-SCT-R02')
WHERE routername IN ('value1', 'value2')

多OR正则(避免使用):

-- 性能差,避免使用
WHERE routername =~ /MAIPU/ OR routername =~ /SCT/ OR routername =~ /CORE/

🔍 各种方式的特性对比

查询方式 语法示例 性能 可读性 适用场景
精确匹配 routername = '值' ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ 已知具体值
多值OR精确 name = 'A' OR name = 'B' ⭐⭐⭐⭐ ⭐⭐⭐⭐ 已知多个具体值
基础模糊 name =~ /pattern/ ⭐⭐⭐ ⭐⭐⭐⭐⭐ 快速简单匹配
多值组合 name =~ /(pat1|pat2)/ ⭐⭐⭐ ⭐⭐⭐⭐ 同类型多值匹配
标准模式 name =~ /.*pattern.*/ ⭐⭐⭐ ⭐⭐⭐⭐ 明确范围匹配
多OR正则 =~ /a/ or =~ /b/ ⭐⭐ 避免使用

🎯 应用场景详细示例

场景1:精确设备查询

-- 查询特定设备
SELECT * FROM xr_intf_stats 
WHERE routername = 'NJ-MAIPU-1'
ORDER BY time DESC 
LIMIT 10-- 查询多个特定设备
SELECT * FROM xr_intf_stats 
WHERE routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02'
ORDER BY time DESC 
LIMIT 10

场景2:设备类型筛选

-- 查询所有MAIPU设备
SELECT * FROM xr_intf_stats 
WHERE routername =~ /MAIPU/
ORDER BY time DESC -- 查询多种类型设备
SELECT * FROM xr_intf_stats 
WHERE routername =~ /(MAIPU|SCT|CORE)/
ORDER BY time DESC 

场景3:设备编号模式匹配

-- 查询所有R系列设备
SELECT * FROM xr_intf_stats 
WHERE routername =~ /.*-R[0-9]+$/
ORDER BY time DESC -- 查询NJ开头的所有设备
SELECT * FROM xr_intf_stats 
WHERE routername =~ /^NJ-.*/
ORDER BY time DESC 

场景4:端口和接口查询

-- 查询Tengigabit接口
SELECT * FROM xr_intf_stats 
WHERE name =~ /tengigabit/
ORDER BY time DESC -- 查询特定端口范围
SELECT * FROM xr_intf_stats 
WHERE name =~ /0\/0\/[1-4]/
ORDER BY time DESC 

🛠️ 性能优化实践

1. 字段类型检查

-- 确认routername是tag字段(有索引)
SHOW TAG KEYS FROM xr_intf_stats-- 如果是field字段,考虑修改数据模型
SHOW FIELD KEYS FROM xr_intf_stats

2. 查询性能层级

-- 1. 最佳:精确匹配
WHERE routername = 'NJ-MAIPU-1'-- 2. 良好:多值OR精确匹配  
WHERE routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02'-- 3. 一般:单正则匹配
WHERE routername =~ /MAIPU/-- 4. 一般:多值组合正则
WHERE routername =~ /(MAIPU|SCT)/-- 5. 避免:多OR正则
WHERE routername =~ /MAIPU/ OR routername =~ /SCT/

3. 数据模型优化建议

-- 原始数据
INSERT xr_intf_stats,routername="NJ-MAIPU-1" value=100-- 优化建议:添加设备类型tag
INSERT xr_intf_stats,routername="NJ-MAIPU-1",device_type="MAIPU",location="NJ"
value=100

📈 实际查询示例

示例1:多设备流量查询

SELECT mean("byte_in") AS avg_in, mean("byte_out") AS avg_out
FROM xr_intf_stats
WHERE time > now() - 1hAND (routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02')
GROUP BY time(1m), routername

示例2:设备类型聚合

SELECT mean("byte_in") AS avg_in
FROM xr_intf_stats
WHERE time > now() - 24hAND routername =~ /(MAIPU|SCT)/
GROUP BY time(1h), routername

示例3:异常端口检测

SELECT *
FROM xr_intf_stats
WHERE time > now() - 30mAND (err_bitrate > 0 OR byte_in = 0)AND routername =~ /^NJ-.*/
ORDER BY time DESC

💡 最佳实践总结

  1. 首选精确匹配routername = '具体值'
  2. 多值用OR连接name = 'A' OR name = 'B'
  3. 模糊用单正则name =~ /pattern/
  4. 多模式用组合name =~ /(pat1|pat2)/
  5. 避免多OR正则:性能极差
  6. 确认字段类型:tag字段才有索引
  7. 优化数据模型:添加衍生tag字段

🚨 常见错误避免

-- 错误:IN语法不支持
SELECT * FROM xr_intf_stats WHERE routername IN ('A','B')-- 错误:单引号位置
SELECT * FROM xr_intf_stats WHERE routername =~ /'(A|B)'/-- 正确:多值查询
SELECT * FROM xr_intf_stats 
WHERE routername = 'A' OR routername = 'B'-- 正确:正则多值
SELECT * FROM xr_intf_stats 
WHERE routername =~ /^(A|B)$/

这个总结基于InfluxQL的实际语法限制,提供了可立即使用的正确查询示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多表关系和多表查询

多表关系和多表查询 1.0 一对多 表与表之间也存在关系,有一对一,一对多,多对多三种,比如部门表中的一个部门,对应着员工表中的多个员工 ,这就是一对多的关系,我们将多的一方称作子表,比如上面的员工表,一的一…

【反比例函数】【做题笔记】【图形存在性】题目合集

【反比例函数】【做题笔记】【图形存在性】题目合集 1.(2023 秋盐城月考) 如图,点 \(A\) 在双曲线 \(y=\frac{k}{x} \ (k \neq 0)\) 的第一象限的图象上,\(AB\) 垂直于 \(y\) 轴于点 \(B\),点 \(C\) 在 \(x\) 轴的…

20250920 嘉定江桥---江苏吴江区太湖 往返160KM骑行小记

20250920 嘉定江桥<--->江苏吴江区太湖 往返160KM骑行小记历时14小时, 完成了这次160km的骑行, 解锁新地标太湖, 也创造了我的个人单次骑行距离的纪录.从嘉定江桥出发, 沿北青公路向西骑行26KM直到尽头, 就可以出…

工作队列(Work Queues)与消息确认(Ack)

本章目标理解工作队列(竞争消费者模式)的概念和适用场景。掌握消息确认(Acknowledgment)机制,实现可靠的消息处理。学习消息持久化(Durability),防止服务器重启导致消息丢失。使用公平分发(Fair Dispatch)来…

React18新增的hook useId

useId 首先要理解SSR时,服务端和客户端的水合 服务端会生成一个HTML模版,和JS一起发给客户端,然后客户端的JS来“水合”HTML中的内容,转为可交互的组件。而官方文档中所说的“客户端组件被激活处理后的顺序可能与服…

十年架构演进史:从臃肿war包到云原生,我们终于解放了!

十年架构演进史:从臃肿war包到云原生,我们终于解放了!单体到微服务架构服务演化过程大家好,欢迎来到程序视点!我是你们的老朋友.安戈! 前言 各位技术人,不知道你们是否和我一样,每次打开一个老项目的代码仓库,…

week1作业

在 Java 中,我本学期主要遵循的编码规范如下: 类名我采用大驼峰命名法,每个单词的首字母大写,例如StudentInfo 、UserService。 方法名我采用小驼峰命名法,首单词首字母小写,其余单词首字母大写,如getStudentNa…

6-5 汇聚层

本章主要介绍汇聚层相关原理和实现1.最大汇聚层和平均汇聚层 import torch from torch import nn from d2l import torch as d2ldef pool2d(X, pool_size, mode=max):p_h, p_w = pool_sizeY = torch.zeros((X.shape[0]…

从IpadOS 26 Beta版切换成IpadOS 26 正式版

设置 - 通用 - 软件更新 - Beta版更新点击上图中的Beta版更新,进入如下图所示菜单,选择关闭返回至软件更新页面,点击IpadOS 26进行安装

2025.9.21总结

今天继续梳理已学习过的知识和学习路线。 对于已有技术,web开发,安卓开发而言。光凭借这些技术对于找到一份工作而言还是比较困难的。 而大三暑假的时候最长差不多能放出去半年的时间,也就是需要在寒假把简历打磨好…

6-4 多输入多输出通道

本章主要介绍通道多输入和多输出1.多输入通道 import torch from d2l import torch as d2l def corr2d_multi_in(X, K):# 先遍历 X 和 K 的第0个维度(通道维度),再把他们加在一起# 把所有配对得到的互相关结果逐元素…

6-6 卷积神经网络LeNet

本章主要介绍卷积神经网络LeNet的实现1.LeNet import torch from torch import nn from d2l import torch as d2lnet = nn.Sequential(nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),nn.AvgPool2d(kernel_…

5-5读写文件

本章主要介绍将训练后的数据保存到文件中1.加载和保存张量 import torch from torch import nn from torch.nn import functional as Fx = torch.arange(4) # 把 Python 对象 x 打包成字节流,原封不动地写进文件 x-fi…

6-2图像卷积

本章主要介绍二维卷积和图像卷积的计算1.二维卷积计算 import torch from torch import nn from d2l import torch as d2l定义二维卷积函数 def corr2d(X, K):计算二维互相关运算h, w = K.shapeY = torch.zeros((X.sha…

二叉树的高度和判断平衡二叉树

LCR 176. 判断是否为平衡二叉树 利用递归得出结果,平衡二叉树成立的条件:左子树和右子树之差的绝对值小于等于 1,也就是当左子树高度 - 右子树高度的差值等于 0或者等于1的时候该平衡二叉树成立。 那么我们可以利用…

20250921 之所思 - 人生如梦

20250921 之所思一大早就收到老板要求每天晚上十点开会的信息,顿时心情很糟,因为晚上十点开会,开完就已经接近十二点,很害怕自己会彻夜难眠,然后起床就一直在想这件事,顿时整个早上的心情都受到了影响。还为这个…

UE5 Cook数据结构

UE Cook 数据结构 本篇讲非 MPCook 的数据结构1. FPackageDatas核心类 FPackageDatas 是管理 CookOnTheFlyServer 里的所有 PackageData 的列表的类。PackageDatas 是一个关联数组,存储 COTFS 需要的 package(如 coo…

通过微信对客服系统客户进行消息提醒,比如客户快过期了,访客发来的消息也是通过模板消息通知给客服

vx: llike620我的客服系统已经通过自己开发的形式实现了对接 客户服务到期提醒​​和​​客服消息通知​​——正是模板消息功能的典型和优秀应用案例。 作为开发者,您肯定关心如何将现有系统做得更健壮、更高效。以…

WPF治具软件模板分享 - Dragonet

目录WPF治具软件模板分享程序功能介绍功能实现导航功能程序配置日志功能界面介绍 WPF治具软件模板分享 运行环境:VS2022 .NET 8.0 完整项目:Gitee仓库 项目重命名方法参考:网页概要:针对治具单机软件制作了一个设…

基于WOA鲸鱼优化的XGBoost序列预测算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)2.算法运行软件版本 matlab2024b3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)%最大迭代次数 paramters.maxiter = 50; paramters.tr…