全部產品
Search
文件中心

Simple Log Service:欄位操作函數

更新時間:Jul 16, 2024

本文介紹欄位操作函數的文法規則,包括參數解釋、函數樣本等。

函數列表

函數

說明

v

獲得日誌特定欄位的值。當同時傳入多個欄位名時,返回日誌中第一個存在的欄位的值。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_set

添加新欄位或為現有欄位設定新的欄位值。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_drop_fields

刪除合格日誌欄位。

支援和其他函數組合使用。相關樣本,請參見複雜JSON資料加工

e_keep_fields

保留合格日誌欄位。

e_pack_fields

打包日誌欄位,並輸出到新的欄位中。

e_rename

重新命名合格日誌欄位名稱。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

v

調用v函數獲得日誌特定欄位的值。當同時傳入多個欄位名時,返回日誌中第一個存在的欄位的值。

  • 函數格式

    v(key, ..., default=None)
  • 參數說明

    參數

    參數類型

    是否必填

    說明

    key

    String

    指定欄位名。

    default

    任意

    指定的欄位名不存在時,返回default的值。預設值為None

  • 返回結果

    返回日誌中第一個存在的欄位值。不存在時返回default參數的值。

  • 函數樣本

    將content欄位的值賦給test_content欄位。

    • 原始日誌

      content: hello
    • 加工規則

      e_set("test_content", v("content"))
    • 加工結果

      content: hello
      test_content: hello
  • 更多參考

    支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_set

調用e_set函數添加新欄位或為現有欄位設定新的欄位值。

  • 函數格式

    e_set(key1, value1, key2, value2, mode="overwrite")
    重要
    • 函數中key1value1必須成對出現。

    • 通過e_set函數設定時間欄位F_TIME__time__時,必須設定為數字類型的字串。

      e_set(F_TIME, "abc")   # 錯誤
      e_set(F_TIME, "12345678")   # 正確
  • 參數說明

    參數

    參數類型

    是否必填

    說明

    key

    String

    目標欄位名,也可以通過字串運算式獲得該欄位名。特殊欄位名的設定請參見事件類型

    value

    任意

    新的欄位值。非字串都轉化成字串放入日誌中,其中元組、列表、字典會轉換成JSON對象的字串。關於字串轉換請參見賦值自動轉換

    說明

    如果傳遞的值是None,則不會進行更新操作。

    mode

    String

    欄位的覆蓋模式。預設為overwrite。更多資訊,請參見欄位提取檢查與覆蓋模式

  • 返回結果

    返回更新後的日誌。

  • 函數樣本

    • 樣本1:為欄位設定固定值。

      添加一個新欄位city,欄位值為上海

      e_set("city", "上海")
    • 樣本2:複製欄位值。

      調用單個運算式函數,將現有欄位ret的值,賦給新欄位result

      e_set("result", v("ret"))
    • 樣本3:動態設定值。

      調用組合運算式函數,擷取第一個存在的欄位值,返回其小寫格式並賦值給欄位result

      e_set("result", str_lower(v("ret", "return")))
    • 樣本4:多次設定欄位值。

      1. 設定欄位event_type的值。

        e_set("event_type", "login event", "event_info", "login host")
      2. 如果欄位ret的值為fail,然後將欄位event_type的值設定為login failed event

        e_if(e_search('ret==fail'), e_set("event_type", "login failed event" ))
    • 更多參考

      支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_drop_fields

調用e_drop_fields函數刪除合格日誌欄位。

  • 函數格式

    e_drop_fields(key1, key2, ....,regex=False)
  • 參數說明

    參數

    參數類型

    是否必填

    說明

    key

    String

    日誌欄位名,可以為Regex。當欄位名完全滿足條件時刪除該欄位,保留不滿足條件的欄位。關於Regex的更多資訊,請參見Regex

    至少需要配置一個日誌欄位。

    regex

    Boolean

    如果設定為False,表示不使用Regex進行匹配。當不配置該參數時,系統預設取值為True。

  • 返回結果

    返回刪除後的日誌。

  • 函數樣本

    如果content欄位的值為123,則刪除content欄位和age欄位。

    • 原始日誌

      age: 18
      content: 123
      name: twiss
    • 加工規則

      e_if(e_search("content==123"), e_drop_fields("content", "age",regex=True))
    • 加工結果

      name: twiss
  • 更多參考

    支援其他它函數組合使用。相關樣本,請參見複雜JSON資料加工

e_keep_fields

調用e_keep_fields函數保留合格日誌欄位。

說明

Log Service中包含內建的元欄位,例如__time____topic__等。如果在調用e_keep_fields函數時沒有保留__time__欄位,則日誌時間將被重設為系統目前時間。如果您不希望重設元欄位的值,需要將元欄位放入列表中,常見格式為F_TIME, F_META, F_TAGS, "f1", "f2"。更多資訊,請參見固定標識

  • 函數格式

    e_keep_fields(key1, key2, ....,regex=False)
  • 參數說明

    參數

    參數類型

    是否必填

    說明

    key

    String

    日誌欄位名,可以為Regex。當欄位名完全滿足條件時保留該欄位,刪除不滿足條件的欄位。

    至少需要配置一個欄位。

    regex

    Boolean

    如果設定為False,表示不使用Regex進行匹配。當不配置該參數時,系統預設取值為True。

  • 返回結果

    返回保留的日誌。

  • 函數樣本

    如果content欄位的值是123,則保留contentage欄位。

    • 原始日誌

      age: 18
      content: 123
      name: twiss
    • 加工規則

      e_if(e_search("content==123"), e_keep_fields("content", "age"))
    • 加工結果

      age: 18
      content: 123

e_pack_fields

調用e_pack_fields函數將日誌欄位進行打包,並輸出到新的欄位中。

  • 函數格式

    e_pack_fields(output_fields,include=".*",exclude=None,drop_packed=True)
  • 參數說明

    參數

    類型

    是否必填

    說明

    output_field

    String

    指定打包後輸出的欄位名稱。其值為JSON格式。

    include

    String

    白名單配置,符合Regex的欄位會被打包。預設為".*" ,表示全部匹配。更多資訊,請參見Regex

    exclude

    String

    黑名單配置,符合Regex的欄位不會被打包。預設為None,表示不進行匹配判斷。更多資訊,請參見Regex

    drop_packed

    Boolean

    打包資料後是否刪除被打包的原資料,預設為True。

    • True(預設值):輸出結果中刪除被打包的原資料。

    • False:輸出結果中不刪除被打包的原資料。

  • 返回結果

    返回被打包後的日誌資料。

  • 函數樣本

    • 樣本1:將日誌所有欄位打包到test欄位,預設刪除被打包的原始欄位。

      • 原始日誌

        test1:123
        test2:456
        test3:789
      • 加工規則

        e_pack_fields("test")
      • 加工結果

        test:{"test1": "123", "test2": "456", "test3": "789"}
    • 樣本2:將日誌所有欄位打包到test欄位,不刪除被打包的原始欄位。

      • 原始日誌

        test1:123
        test2:456
        test3:789
      • 加工規則

        e_pack_fields("test",drop_packed=False)
      • 加工結果

        test:{"test1": "123", "test2": "456", "test3": "789"}
        test1:123
        test2:456
        test3:789
    • 樣本3:打包testabcd欄位到content欄位,不刪除被打包的原始欄位。

      • 原始日誌

        abcd@#%:123
        test:456
        abcd:789
      • 加工規則

        e_pack_fields("content", include="\w+", drop_packed=False)
      • 加工結果

        abcd:789
        abcd@#%:123
        content:{"test": "456", "abcd": "789"}
        test:456
    • 樣本4:不打包testabcd欄位,其餘欄位打包到content欄位,刪除被打包的原始欄位。

      • 原始日誌

        abcd@#%:123
        test:456
        abcd:789
      • 加工規則

        e_pack_fields("content", exclude="\w+", drop_packed=True)
      • 加工結果

        abcd:789
        content:{"abcd@#%": "123"}
        test:456

e_rename

調用e_rename函數重新命名合格日誌欄位名稱。

  • 函數格式

    e_rename("key1", "new key1", "key2", "new key2", ..., regex=False)
    說明

    函數中keynew key必須成對出現。new key已存在於源日誌時,不進行任何操作。

  • 參數說明

    參數

    參數類型

    是否必填

    說明

    key

    String

    日誌欄位名,可以為Regex。當欄位名完全滿足條件時,重新命名該欄位。關於Regex的更多資訊,請參見Regex

    至少需要配置一個欄位。

    new key

    String

    重新命名後的欄位名。

    regex

    Boolean

    如果設定為False,表示不使用Regex進行匹配。當不配置該參數時,系統預設取值為True。

  • 返回結果

    返回重新命名後的欄位。

  • 函數樣本

    • 樣本1:將欄位host重新命名為client_host

      • 原始日誌

        host: 1006
      • 加工規則

        e_rename("host","client_host")
      • 加工結果

        client_host: 1006
    • 樣本2:不存在欄位時,不進行重新命名。

      • 原始日誌

        host: 1006
      • 加工規則

        e_rename("url","rename_url")
      • 加工結果

        host: 1006
    • 更多參考

      支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料