本文介紹函數中字段提取模式參數的取值以及含義。
相關函數
以下為使用字段提取模式mode參數的函數列表及其參數默認值。
分類 | 函數 | mode的默認值 |
字段值賦值函數 | overwrite | |
字段值提取函數 | fill-auto | |
fill-auto | ||
fill-auto | ||
fill-auto | ||
fill-auto | ||
overwrite | ||
overwrite | ||
映射富化函數 | fill-auto | |
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