本文介绍函数中字段提取模式参数的取值以及含义。
相关函数
以下为使用字段提取模式mode参数的函数列表及其参数默认值。
分类 | 函数 | mode的默认值 |
字段值赋值函数 | overwrite | |
字段值提取函数 | fill-auto | |
fill-auto | ||
fill-auto | ||
fill-auto | ||
fill-auto | ||
overwrite | ||
overwrite | ||
映射富化函数 | fill-auto | |
fill-auto | ||
overwrite | ||
fill-auto |
字段提取检查与覆盖模式
下表介绍字段提取模式mode参数的不同取值以及说明。
参数值 | 说明 |
fill | 当目标字段不存在或者值为空时,设置目标字段。 |
fill-auto | 当新值非空,且目标字段不存在或者值为空时,设置目标字段。 |
add | 当目标字段不存在时,设置目标字段。 |
add-auto | 当新值非空,且目标字段不存在时,设置目标字段。 |
overwrite | 总是设置目标字段。 |
overwrite-auto | 当新值非空,设置目标字段。 |
以下通过示例的方式对不同模式进行说明:
原始日志
a: # 空值 b: 100
加工示例
模式
示例
加工结果
add
e_set("c", "123", mode='add')
a:# 空值 b: 100 c: 123
e_set("c", "", mode='add')
a:# 空值 b: 100 c:
e_set("a", "123", mode='add')
a:# 空值 b: 100
add-auto
e_set("c", "", mode='add-auto')
不添加字段
c
,原始日志不变。fill
e_set("c", "123", mode='fill')
a:# 空值 b: 100 c: 123
e_set("c", "", mode='fill')
a:# 空值 b: 100 c:
e_set("a", "123", mode='fill')
a: 123 b: 100
e_set("b", "123", mode='fill')
目标字段不变,仍为
b: 100
。fill-auto
e_set("c", "", mode='fill-auto')
不添加字段
c
,原始日志不变。overwrite
e_set("c", "123", mode='overwrite')
a:# 空值 b: 100 c: 123
e_set("c", "", mode='overwrite')
a:# 空值 b: 100 c:
e_set("b", "200", mode='overwrite')
a:# 空值 b: 200
e_set("b", "", mode='overwrite')
a:# 空值 b:
overwrite-auto
e_set("b", "", mode='overwrite-auto')
目标字段不变,仍为
b: 100
。
字段名提取约束
适用于e_json、e_kv,e_kv_delimit、e_regex等函数。
提取的字段名必须满足字符条件,否则会被丢弃。不支持正则表达式u'_*[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\u4e00-\u9fa5\u0800-\u4e00\\w\\.\\-]*'
。例如123=abc
、__1__:100
、1k=200
、{"123": "456"}
等字段名会被丢弃。
示例:使用默认的字段约束名。
原始日志
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
加工规则
e_json( "data", fmt="parent", sep="@", prefix="__", suffix="__", include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*", mode="fill-auto", )
加工结果
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data@__k1__:100 k2@__k3__:200 k4@__k5__:300