Documentation

在Flux中使用正则表达式

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

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

Go 正则表达式语法

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

正则表达式运算符

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

=~

当左边的表达式MATCHES与右边的正则表达式匹配时,它的值为true

!~

当左侧的表达式不匹配右侧的正则表达式时,这将评估为true

Flux中的正则表达式

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

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

示例

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

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

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "cpu" and r.cpu =~ /cpu[0-2]$/)

使用正则表达式按字段键过滤

以下示例排除了字段键中没有 _percent 的记录。

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "mem" and r._field =~ /_percent/)

删除匹配正则表达式的列

以下示例删除名称不以 _ 开头的列。

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "mem")
    |> drop(fn: (column) => column !~ /^_.*/)
语法文档

regexp 语法 GoDoc
RE2 语法概述

Go 正则表达式测试器

正则表达式测试器 - Golang
Regex101



Flux的未来

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

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

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

有关如何开始的更多信息,请查看:

由TSM驱动的InfluxDB Cloud