Documentation

在 Flux 中使用正则表达式

此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新的稳定版本。 请参阅等效的 InfluxDB v2 文档: 在 Flux 中使用正则表达式

正则表达式 (regexes) 在大型数据集中匹配模式时非常强大。 在 Flux 中,正则表达式主要用于谓词函数中的评估逻辑,例如过滤行、删除和保留列、状态检测等。 本指南介绍如何在 Flux 脚本中使用正则表达式。

如果您刚开始使用 Flux 查询,请查看以下内容

  • Flux 入门,了解 Flux 的概念概述和 Flux 查询的各个部分。
  • 执行查询,了解运行查询的各种方法。

Go 正则表达式语法

Flux 使用 Go 的 regexp 包 进行正则表达式搜索。 以下 链接 提供了有关 Go 正则表达式语法的信息。

正则表达式运算符

Flux 提供了两个比较运算符,用于正则表达式。

=~

当左侧的表达式 匹配 右侧的正则表达式时,结果为 true

!~

当左侧的表达式 不匹配 右侧的正则表达式时,结果为 true

Flux 中的正则表达式

在 Flux 脚本中使用正则表达式匹配时,请用 / 将正则表达式括起来。 以下是基本的正则表达式比较语法

基本正则表达式比较语法
expression =~ /regex/
expression !~ /regex/

示例

使用正则表达式按标签值过滤

以下示例按 cpu 标签过滤记录。 它仅保留 cpucpu0cpu1cpu2 的记录。

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 !~ /_.*/)
语法文档

regexp Syntax GoDoc
RE2 语法概述

Go 正则表达式测试器

Regex Tester - Golang
Regex101


此页面对您有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。 您可以继续像现在这样使用它,而无需对代码进行任何更改。

阅读更多

InfluxDB 3 开源版现已公开发布 Alpha 版本

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可协议获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们新的开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看