在 Flux 中使用正则表达式
此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: 在 Flux 中使用正则表达式。
正则表达式 (regexes) 在匹配大型数据集合中的模式时非常强大。使用 Flux,正则表达式主要用于谓词函数中的评估逻辑,例如过滤行、删除和保留列、状态检测等。本指南展示了如何在您的 Flux 脚本中使用正则表达式。
如果您刚开始使用 Flux 查询,请查看以下内容
Go 正则表达式语法
Flux 使用 Go 的 regexp 包进行正则表达式搜索。下面的链接提供了有关 Go 正则表达式语法的信息。
正则表达式运算符
Flux 提供了两个比较运算符用于正则表达式。
=~
当左侧的表达式与右侧的正则表达式匹配时,此表达式的计算结果为 true
。
!~
当左侧的表达式不匹配右侧的正则表达式时,此表达式的计算结果为 true
。
Flux 中的正则表达式
在 Flux 脚本中使用正则表达式匹配时,请用 /
将正则表达式括起来。以下是基本的正则表达式比较语法
基本正则表达式比较语法
expression =~ /regex/
expression !~ /regex/
示例
使用正则表达式按标签值过滤
以下示例按 cpu
标签过滤记录。它仅保留 cpu
为 cpu0
、cpu1
或 cpu2
的记录。
from(bucket: "db/rp")
|> range(start: -15m)
|> filter(fn: (r) =>
r._measurement == "cpu" and
r._field == "usage_user" and
r.cpu =~ /cpu[0-2]/
)
使用正则表达式按字段键过滤
以下示例排除字段键中不包含 _percent
的记录。
from(bucket: "db/rp")
|> range(start: -15m)
|> filter(fn: (r) =>
r._measurement == "mem" and
r._field =~ /_percent/
)
删除与正则表达式匹配的列
以下示例删除名称不以 _
开头的列。
from(bucket: "db/rp")
|> range(start: -15m)
|> filter(fn: (r) => r._measurement == "mem")
|> drop(fn: (column) => column !~ /_.*/)
有用的链接
语法文档
Go 正则表达式测试器
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要查找支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。