字段值提取函数
更新时间:2025-10-10
字段值提取函数
简介
键值提取函数常见的使用场景如下图,处理为结构化数据之后,可以进一步用于 SQL 分析的场景。
e_regex 函数
函数定义
获取字段值,返回对应字符串。
语法描述
Text
1e_regex(field, regex, fields_info=None, mode="fill-auto", pack_json='')
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
field | 待提取的字段名 | String | 是 | - | - |
regex | 正则表达式 | String | 是 | - | - |
fields_info | 匹配后目标字段名。当正则表达式参数没有配置命名捕获的名称时,必须配置该参数。 | List<Table> | 否 | - | - |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | overwrite | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
pack_json | 将正则表达式的所有匹配结果打包放入pack_json指定的字段中。默认值为空,表示不打包。 | String | 否 | - | - |
示例
- 示例1
原始日志:
Text
1{"content": "1234abcd5678"}
加工规则:
Text
1e_regex("content", "\d+", [{'target1':'long'}])
加工结果:
Text
1{"content": "1234abcd5678", "target1": 1234}
- 示例2
原始日志:
Text
1{"content": "1234abcd"}
加工规则:
Text
1e_regex("content", "(?<target1>\d+)(.*)", [{'target2':'string'}])
加工结果:
Text
1{"content": "1234abcd5678", "target1": "1234", "target2": abcd}
- 示例3
原始日志:
Text
1{"content": "1234abcd5678"}
加工规则:
Text
1e_regex("content", "\d+", [{'target1':'long'}, {'target2':'long'}])
加工结果:
Text
1{"content": "1234abcd5678", "target1": 1234, "target2": 5678}
- 示例4
原始日志:
Text
1{"content": "1234abcd5678"}
加工规则:
Text
1e_regex("content", "\d+", [{'target1':'long'}, {'target2':'long'}], pack_json='new')
加工结果:
Text
1{"content": "1234abcd5678", "new": {"target1": 1234, "target2": 5678}}
e_json 函数
函数定义
从 JSON 中提取字段值。
语法描述
Text
1e_json(field, depth=100, prefix="", suffix="", fmt="simple", sep=".", mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
field | 待提取的字段名 | String | 是 | - | - |
depth | 字段展开的深度。取值范围为1~2000,1表示只展开第一层,默认为100层 | Int | 否 | 100 | 1~2000 |
prefix | 展开时添加为字段名的前缀。 | String | 否 | - | - |
suffix | 展开时添加为字段名的后缀。 | String | 否 | - | - |
fmt | 格式化方式 | String | 否 | simple | - |
sep | 父子节点格式化的分隔符。当fmt取值为full、parent或root时需要设置。默认为. | String | 否 | - | simple(默认值):表示将节点名作为字段名, full:表示将父节点与当前节点合并作为字段名,parent:表示用完整的路径作为字段名, root:表示将根节点与当前节点合并作为字段名 |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "{\"a\": \"a1\", \"b\": \"b1\"}"}
加工规则:
Text
1e_json("content")
加工结果:
Text
1{"content": "{\"a\": \"a1\", \"b\": \"b1\"}", "a": "a1", "b", "b1"}
- 示例2
原始日志:
Text
1{"content": "{\"a\": \"a1\", \"b\": \"b1\"}"}
加工规则:
Text
1e_json("content", prefix="_", suffix="__")
加工结果:
Text
1{"content": "{\"a\": \"a1\", \"b\": \"b1\"}", "_a__": "a1", "_b__", "b1"}
e_sep 函数
函数定义
基于指定的字符(多字符)提取字段值内容。
语法描述
Text
1e_kv(src_field, fields_info, sep=" ", quote="", restrict=false, mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
src_field | 待提取的字段名 | String | 是 | - | - |
fields_info | 匹配后目标字段名。 | List<Table> | 是 | - | - |
sep | 分隔符,不限于单个字符。 | String | 否 | 空格 | - |
quote | 引用符,用于包裹值的字符。 | String | 否 | - | - |
restrict | 默认为 false。当提取的值个数与用户输入的目标字段数不一致时:true:忽略,不进行任何提取处理,false:尽量匹配前几个字段 | String | 否 | false | true/false |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "a1 b1"}
加工规则:
Text
1e_sep('content', [{'a':'string'}, {'b':'string'}])
加工结果:
Text
1{"content": "a1 b1", "a": "a1", "b", "b1"}
- 示例2
原始日志:
Text
1{"content": "a1 b1"}
加工规则:
Text
1e_sep('k1', [{'a':'string'}])
加工结果:
Text
1{"content": "a1 b1", "a": "a1"}
- 示例3
原始日志:
Text
1{"content": "a1 b1"}
加工规则:
Text
1e_sep('k1', [{'a':'string'}, {'b':'string'}, {'c':'string'}])
加工结果:
Text
1{"content": "a1 b1", "a": "a1", "b", "b1"}
e_csv 函数
函数定义
基于指定的字符(多字符)提取字段值内容。
语法描述
Text
1e_csv(src_field, fields_info, sep=",", quote="", restrict=false, mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
src_field | 待提取的字段名 | String | 是 | - | - |
fields_info | 匹配后目标字段名。 | List<Table> | 是 | - | - |
sep | 分隔符,不限于单个字符。 | String | 否 | , | - |
quote | 引用符,用于包裹值的字符。 | String | 否 | - | - |
restrict | 默认为 false。当提取的值个数与用户输入的目标字段数不一致时:true:忽略,不进行任何提取处理,false:尽量匹配前几个字段 | String | 否 | false | true/false |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "a1,b1"}
加工规则:
Text
1e_csv('content', [{'a':'string'}, {'b':'string'}])
加工结果:
Text
1{"content": "a1,b1", "a": "a1", "b", "b1"}
- 示例2
原始日志:
Text
1{"content": "a1,b1"}
加工规则:
Text
1e_csv('k1', [{'a':'string'}])
加工结果:
Text
1{"content": "a1,b1", "a": "a1"}
- 示例3
原始日志:
Text
1{"content": "a1,b1"}
加工规则:
Text
1e_csv('k1', [{'a':'string'}, {'b':'string'}, {'c':'string'}])
加工结果:
Text
1{"content": "a1,b1", "a": "a1", "b", "b1"}
e_psv 函数
函数定义
基于指定的字符(多字符)提取字段值内容。
语法描述
Text
1e_psv(src_field, fields_info, sep="|", quote="", restrict=false, mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
src_field | 待提取的字段名 | String | 是 | - | - |
fields_info | 匹配后目标字段名。 | List<Table> | 是 | - | - |
sep | 分隔符,不限于单个字符。 | String | 否 | | | - |
quote | 引用符,用于包裹值的字符。 | String | 否 | - | - |
restrict | 默认为 false。当提取的值个数与用户输入的目标字段数不一致时:true:忽略,不进行任何提取处理,false:尽量匹配前几个字段 | String | 否 | false | true/false |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "a1|b1"}
加工规则:
Text
1e_psv('content', [{'a':'string'}, {'b':'string'}])
加工结果:
Text
1{"content": "a1|b1", "a": "a1", "b", "b1"}
- 示例2
原始日志:
Text
1{"content": "a1|b1"}
加工规则:
Text
1e_psv('k1', [{'a':'string'}])
加工结果:
Text
1{"content": "a1|b1", "a": "a1"}
- 示例3
原始日志:
Text
1{"content": "a1|b1"}
加工规则:
Text
1e_psv('k1', [{'a':'string'}, {'b':'string'}, {'c':'string'}])
加工结果:
Text
1{"content": "a1|b1", "a": "a1", "b", "b1"}
e_tsv 函数
函数定义
基于指定的字符(多字符)提取字段值内容。
语法描述
Text
1e_tsv(src_field, fields_info, sep="\t", quote="", restrict=false, mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
src_field | 待提取的字段名 | String | 是 | - | - |
fields_info | 匹配后目标字段名。 | List<Table> | 是 | - | - |
sep | 分隔符,不限于单个字符。 | String | 否 | \t | - |
quote | 引用符,用于包裹值的字符。 | String | 否 | - | - |
restrict | 默认为 false。当提取的值个数与用户输入的目标字段数不一致时:true:忽略,不进行任何提取处理,false:尽量匹配前几个字段 | String | 否 | false | true/false |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "a1\tb1"}
加工规则:
Text
1e_tsv('content', [{'a':'string'}, {'b':'string'}])
加工结果:
Text
1{"content": "a1\tb1", "a": "a1", "b", "b1"}
- 示例2
原始日志:
Text
1{"content": "a1\tb1"}
加工规则:
Text
1e_tsv('k1', [{'a':'string'}])
加工结果:
Text
1{"content": "a1\tb1", "a": "a1"}
- 示例3
原始日志:
Text
1{"content": "a1\tb1"}
加工规则:
Text
1e_tsv('k1', [{'a':'string'}, {'b':'string'}, {'c':'string'}])
加工结果:
Text
1{"content": "a1\tb1", "a": "a1", "b", "b1"}
e_kv 函数
函数定义
基于两级分割符提取字段值。
语法描述
Text
1e_kv(src_field, reg, keyIndex, valueIndex, fields_info=None, mode="fill-auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
---|---|---|---|---|---|
src_field | 待提取的字段名 | String | 是 | - | - |
reg | 关键字与值的正则表达式的分隔符串 | String | 是 | - | - |
keyIndex | key的下标,表示key取正则表达式匹配结果中的第几个 | Int | 是 | - | - |
valueIndex | value的下标,表示value取正则表达式匹配结果中的第几个 | Int | 是 | - | - |
fields_info | 匹配后目标字段名。 | List<Table> | 否 | - | - |
mode | 字段的覆盖模式。默认为fill-auto | String | 否 | fill-auto | fill/fill-auto/add/add-auto/overwrite/overwrite-auto |
示例
- 示例1
原始日志:
Text
1{"content": "a:a1, b:b1"}
加工规则:
Text
1e_kv('content', '([a-z]+):([a-z0-9]+)', 1, 2, [{'a':'string'}, {'b':'string'}])
加工结果:
Text
1{"content": "a:a1, b:b1", "a": "a1", "b", "b1"}