全部產品
Search
文件中心

Simple Log Service:欄位提模數式

更新時間:Oct 29, 2024

本文介紹函數中欄位提模數式參數的取值以及含義。

相關函數

以下為使用欄位提模數式mode參數的函數列表及其參數預設值。

分類

函數

mode的預設值

欄位值賦值函數

e_set

overwrite

欄位值提取函數

e_regex

fill-auto

e_json

fill-auto

e_kv

fill-auto

e_csv、e_psv、e_tsv

fill-auto

e_kv_delimit

fill-auto

e_anchor

overwrite

e_syslogrfc

overwrite

映射富化函數

e_dict_map

fill-auto

e_table_map

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等函數。

提取的欄位名必須滿足字元條件,否則會被丟棄。不支援Regexu'_*[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\u4e00-\u9fa5\u0800-\u4e00\\w\\.\\-]*'。例如123=abc__1__:1001k=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