正则表达式
InfluxDB 3 Core 处于公开 Alpha 阶段
InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适用于生产环境。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 alpha 体验的反馈,并邀请您加入我们的公共频道以获取更新和分享反馈。
Alpha 阶段的期望和建议
- 在 alpha 阶段,我们可能会进行重大更改,这可能需要您删除数据并重新开始。如果您使用的数据很重要,请在其他地方保留备份副本。
- 在 alpha 阶段,每次合并到 InfluxDB
main
分支时,我们都会生成新的构建版本。变更频繁,相关更新会发布到我们的公共频道。
正则表达式是用于识别标识符和字符串值中模式的字符序列。InfluxQL 在以下操作中支持正则表达式
- 在
SELECT
子句中标识要查询的字段和 tag。 - 在
FROM
子句中标识要查询的 measurement。 - 在
WHERE
子句中测试 tag 值和 字符串字段值。 - 在
GROUP BY
子句中标识要分组的 tag 键
正则表达式比较比精确字符串比较在计算上更密集。使用正则表达式的查询不如不使用正则表达式的查询性能高。
正则表达式语法
InfluxQL 正则表达式用 /
字符括起来,并使用 Go 正则表达式语法。
正则表达式标志
正则表达式标志修改表达式的模式匹配行为。InfluxQL 支持以下正则表达式标志
标志 | 描述 |
---|
i | 不区分大小写 |
m | 多行模式:^ 和 $ 除了匹配文本的开头/结尾外,还匹配行的开头/结尾 |
s | 让 . 匹配 \n |
U | 非贪婪:交换 x* 和 x*? 、x+ 和 x+? 等的含义。 |
在正则表达式模式的开头包含正则表达式标志,并用括号 (()
) 括起来,前面加上问号 (?
)。
正则表达式运算符
InfluxQL 提供了以下正则表达式运算符,用于测试字符串操作数是否与正则表达式匹配
=~
:如果字符串与正则表达式匹配,则返回 true!~
:如果字符串与正则表达式不匹配,则返回 true
InfluxQL 正则表达式运算符用于测试 WHERE
子句中的字符串列值。
正则表达式示例
以下示例使用以下示例数据集
使用正则表达式在 SELECT 子句中指定字段键和 tag 键
时间 | temp_avg | temp_max | temp_min |
---|
2020-01-01T00:00:00Z | 52 | 66 | 44 |
2020-01-01T00:00:00Z | 53 | 59 | 47 |
2020-01-01T00:00:00Z | 50 | 57 | 44 |
2020-01-02T00:00:00Z | 54 | 61 | 49 |
2020-01-02T00:00:00Z | 51 | 60 | 44 |
2020-01-02T00:00:00Z | 53 | 66 | 42 |
… | … | … | … |
使用正则表达式在 FROM 子句中指定 measurement
时间 | temp | temp_avg | temp_max | temp_min |
---|
2020-01-01T00:00:00Z | | 52 | 66 | 44 |
2020-01-01T00:00:00Z | | 53 | 59 | 47 |
2020-01-01T00:00:00Z | | 50 | 57 | 44 |
2020-01-02T00:00:00Z | | 54 | 61 | 49 |
2020-01-02T00:00:00Z | | 51 | 60 | 44 |
2020-01-02T00:00:00Z | | 53 | 66 | 42 |
… | … | … | … | … |
使用正则表达式在 WHERE 子句中指定 tag 值
SELECT * FROM weather WHERE location !~ /^[S]/
时间 | location | precip | temp_avg | temp_max | temp_min | wind_avg |
---|
2020-01-01T00:00:00Z | Concord | 0 | 52 | 66 | 44 | 3.13 |
2020-01-01T00:00:00Z | Hayward | 0 | 50 | 57 | 44 | 2.24 |
2020-01-02T00:00:00Z | Concord | 0 | 53 | 66 | 42 | 3.13 |
2020-01-02T00:00:00Z | Hayward | 0 | 51 | 60 | 44 | 3.8 |
2020-01-03T00:00:00Z | Concord | 0 | 49 | 60 | 38 | 2.68 |
2020-01-03T00:00:00Z | Hayward | 0 | 50 | 62 | 41 | 3.13 |
… | … | … | … | … | … | … |
使用正则表达式在 WHERE 子句中指定没有值的 tag
SELECT * FROM home, weather WHERE location !~ /./
时间 | co | hum | location | precip | room | temp | temp_avg | temp_max | temp_min | wind_avg |
---|
2022-01-01T08:00:00Z | 0 | 35.9 | | | 厨房 | 21 | | | | |
2022-01-01T08:00:00Z | 0 | 35.9 | | | 客厅 | 21.1 | | | | |
2022-01-01T09:00:00Z | 0 | 36.2 | | | 厨房 | 23 | | | | |
2022-01-01T09:00:00Z | 0 | 35.9 | | | 客厅 | 21.4 | | | | |
2022-01-01T10:00:00Z | 0 | 36.1 | | | 厨房 | 22.7 | | | | |
2022-01-01T10:00:00Z | 0 | 36 | | | 客厅 | 21.8 | | | | |
… | … | … | … | … | … | … | … | … | … | … |
使用正则表达式在 GROUP BY 子句中指定 tag 键
SELECT MAX(precip) FROM weather GROUP BY /^l/
时间 | max |
---|
2021-10-24T00:00:00Z | 4.53 |
时间 | max |
---|
2022-12-31T00:00:00Z | 4.34 |
时间 | max |
---|
2021-10-24T00:00:00Z | 4.02 |
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度或支持合同的客户可以 联系 InfluxData 支持。