MAPREGEXEXTRACTOR
使用正则表达式提取数据,并以 VMap 的形式返回结果。
语法
MAPREGEXEXTRACTOR (record-value [ USING PARAMETERS param=value[,...] ])
参数
- record-value
- 包含要对其应用正则表达式的 JSON 或分隔符格式记录的字符串。
参数
pattern
- 用于提取所需数据的正则表达式。
默认值: 空字符串 (
''
) use_jit
- 布尔值,在解析正则表达式时使用实时编译。
默认值:
false
record_terminator
- 用于分隔输入记录的字符。
默认值:
\n
logline_column
- 包含与正则表达式相匹配的完整字符串的目标列。
默认值: 空字符串 (
''
)
示例
这些示例使用以下正则表达式,它们搜索包括 timestamp
、date
、thread_name
和 thread_id
字符串的信息。
当心
出于显示目的,此示例正则表达式添加了换行符以拆分长文本行。要在查询中使用此表达式,请先复制并编辑示例,以移除任何换行符。此示例表达式加载任何 thread_id
十六进制值,无论其是否包含 0x
前缀 (<thread_id>(?:0x)?[0-9a-f]+)
。
'^(?<time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+)
(?<thread_name>[A-Za-z ]+):(?<thread_id>(?:0x)?[0-9a-f]+)
-?(?<transaction_id>[0-9a-f])?(?:[(?<component>\w+)]
\<(?<level>\w+)\> )?(?:<(?<elevel>\w+)> @[?(?<enode>\w+)]?: )
?(?<text>.*)'
为了方便显示,以下示例可能包含换行符。
-
创建一个 Flex 表
flogs
:=> CREATE FLEX TABLE flogs(); CREATE TABLE
-
使用 Flex 表
fregexparser
时,利用 COPY 加载示例日志文件 (vertica.log
)。请注意,此示例包括为显示长文本行而添加的行字符。=> COPY flogs FROM '/home/dbadmin/tempdat/vertica.log' PARSER FREGEXPARSER(pattern=' ^(?<time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+) (?<thread_name>[A-Za-z ]+): (?<thread_id>(?:0x)?[0-9a-f])-?(?<transaction_id>[0-9a-f])?(?:[(?<component>\w+)] \<(?<level>\w+)\> )?(?:<(?<elevel>\w+)> @[?(?<enode>\w+)]?: )?(?<text>.*)'); Rows Loaded ------------- 81399 (1 row)
-
用于返回通过正则表达式调用 MAPREGEXEXTRACTOR 的结果。输出以字符串格式返回函数的结果。
=> SELECT MAPTOSTRING(MapregexExtractor(E'2014-04-02 04:02:51.011 TM Moveout:0x2aab9000f860-a0000000002067 [Txn] <INFO> Begin Txn: a0000000002067 \'Moveout: Tuple Mover\'' using PARAMETERS pattern=
'^(?<time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+) (?<thread_name>[A-Za-z ]+):(?<thread_id>(?:0x)?[0-9a-f]+) -?(?<transaction_id>[0-9a-f])?(?:[(?<component>\w+)] \<(?<level>\w+)\> )?(?:<(?<elevel>\w+)> @[?(?<enode>\w+)]?: ) ?(?<text>.*)'
maptostring -------------------------------------------------------------------------------------------------- { "component" : "Txn", "level" : "INFO", "text" : "Begin Txn: a0000000002067 'Moveout: Tuple Mover'", "thread_id" : "0x2aab9000f860", "thread_name" : "TM Moveout", "time" : "2014-04-02 04:02:51.011", "transaction_id" : "a0000000002067" } (1 row)