You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Databricks regex_extract提取日志中的schema.table_name

问题

需要从格式为2022.11.07T00:00:00.0000 | log_info schema.table_name... [ hh.mm.ss ]的日志中,提取唯一符合word.word格式的schema.table_name。目前用嵌套的split_part语句能得到子串“log_info schema.table_name...”,但希望用Databricks的regex_extract(基于Java正则)实现更简洁的提取,直接拿到第一个点前后的单词组合。

之前的split_part实现代码:

SELECT split_part(split_part(message, '|', 2), '[', 1)
FROM (SELECT '2022.11.07T00:00:00.0000 | log_info schema.table_name... [ hh.mm.ss ]' as message)
解决方案

用regex_extract可以一步到位提取目标内容,直接匹配符合word.word格式且被日志上下文包围的字符串。具体SQL语句如下:

SELECT regex_extract(message, '\\b(\\w+\\.\\w+)\\b', 1) AS schema_table
FROM (SELECT '2022.11.07T00:00:00.0000 | log_info schema.table_name... [ hh.mm.ss ]' as message)

正则表达式说明

  • \\b:匹配单词边界,避免误匹配日志里其他带点的内容(比如开头的时间、结尾的hh.mm.ss)
  • (\\w+\\.\\w+):捕获组,匹配由字母、数字、下划线组成的两个单词,中间用点连接,正好对应schema.table_name的格式
  • 参数1:指定提取第一个捕获组的内容,也就是我们需要的word.word格式字符串

如果日志中存在多个类似格式的字符串,regex_extract默认会返回第一个匹配到的结果,刚好满足提取唯一目标的需求。

内容的提问来源于stack exchange,提问作者Robert Riley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:31:01