全部產品
Search
文件中心

Simple Log Service:資料結構

更新時間:Jul 20, 2024

本文介紹資料加工文法相關的資料結構及其說明。

基本資料結構

基本資料結構的不同類型和說明如下表所示:

類型

說明

整數

用於設定欄位值或者函數的參數傳遞。

例如e_set("f1", 100)表示設定欄位f1的值為100

浮點

用於設定欄位值或者函數的參數傳遞。

例如e_set("f1", 1.5)表示設定欄位f1的值為1.5

字串(String)

字串說明如下:

  • "abc"'abc'相同。當字串中包含半形雙引號(")時,可以使用'abc"xyz',也可以使用反斜線(\)進行反轉("abc\"xyz")。

    反斜線(\)表示反轉,即"\\abc\\xyz"表示\abc\xyz

  • r"\\10.64.1.1\share\folder""\\\\10.64.1.1\\share\\folder"相同,都表示字串\\10.64.1.1\share\folder

  • 多位元組字串以unicode表示,例如中文的長度是2。

  • Regex以字串形式表示。

說明

搜尋值只能使用半形雙引號("")包裹。您可以使用單引號('')包裹外層字串,使用半形雙引號("")包裹裡層搜尋值,例如:e_search("domain: '/url/test.jsp'")是錯誤的,正確的為e_search('domain: "/url/test.jsp"')

位元組

b'abc'不同於字串的記憶體編碼形式,作為某些特殊函數接收或者傳回型別。

Nonenull表示無。部分函數的具名引數的預設值是None,表示特定的預設行為。

說明

Null 字元串與None、null的資料類型不同。

列表(List)

數組,例如[1,2,3,4]。

  • 某些函數參數接收的對象是列表,例如e_dict_map("dict data", ["f1", "f2", "f3"], ...)

  • 某些函數返回的結果是列表,例如當json_select選擇一個數組時會返回列表。

元組(tuple)

元組,與列表功能相同。例如(1,2,3,4)

字典(Dict)

形式為{"key": "value", "k2": "v2", ...}的索引值對組合。關鍵字一般是字串,且不能重複,值可以為上述各種類型。以雜湊方式儲存,尋找時無序。

  • 事件是一種特殊的字典。

  • 某些函數接收特定格式的字典。例如{"key": [1,2,3], "key2": {"k3": "v3"}}

  • 字典結構也應用於字典映射的輸入資料。

布爾(Bool)

例如TrueFalsetruefalse

表格

多列的表格結構。您可以從外部資源中載入多行CSV格式內容構建表格,或者從RDS、Logstore中載入多列資料擷取。主要用於映射富化或其他進階配置情境。

日期時間對象

表示日期時間的記憶體對象,可以轉換為Unix字串或者格式化的時間字串,或者傳遞給其他dt_類函數進行進一步轉換。

事件類型

相關事件類型和說明如下:

  • 基本類型

    資料加工將日誌資料以字典結構進行加工處理,例如{"__topic__": "access_log", "content": "....."}

    字典的關鍵字和值,對應日誌的欄位和值。

    說明

    事件的關鍵字和值都是字串且關鍵字不能重複。

  • 元欄位

    元欄位主要包含如下三部分:

    • 時間欄位__time__:寫入日誌資料時指定的日誌時間。資料類型為整數字串,Unix標準時間格式。單位為秒,表示從1970-1-1 00:00:00 UTC計算起的秒數。

    • 主題__topic__:日誌庫內的日誌可以通過日誌主題來劃分。您可以在寫入時指定日誌主題,並在查詢時指定查詢的日誌主題。

    • __source__:日誌的來源,例如產生該日誌機器的IP地址。

  • 時間欄位修改

    修改時間欄位的值,就是修改日誌的事件時間。可以用日期時間函數對其進行更多的操作。

    說明

    如果刪除了時間欄位,在輸出日誌時,會取資料加工處理資料時的系統時間作為新的事件時間。

  • 標籤

    標籤(tag)指日誌存在標記,用於區分欄位。標籤會以__tag__:名稱關鍵字的格式存在。

    • 如果源Logstore開啟了記錄外網IP功能,則會存在tag:__tag__:__receive_time__

    • Container Service的日誌會存在許多容器類的tag,例如__tag__:__container_name__

    • 可以添加、修改tag。例如添加一個tag名為typee_set("__tag__:type", "access_log")

  • 賦值自動轉換

    事件的關鍵字和值都是字串,因此對事件進行賦值或者設定新的欄位值時,會自動對關鍵字和值進行字串轉換。例如:

    e_set("v1", 12.3)
    e_set("v2", True)

    將欄位v1的值設定為字串12.3,將欄位v2值設定為字串true

    如下為各資料類型轉換為字串樣本:

    類型

    範例

    轉換類型

    轉換範例

    整數

    1

    字串

    "1"

    浮點

    1.2

    字串

    "1.2"

    布爾

    True

    字串

    "true"

    位元組

    b"123"

    使用UTF8解碼為字串

    "123"

    元組

    • 範例1:(1, 2, 3)

    • 範例2:("a", 1)

    列表的字串

    • 範例1:"[1, 2, 3]"

    • 範例2:"[\"a\", 1]"

    列表

    • 範例1:[1,2,3]

    • 範例2:["a", 1]

    字串

    • 範例1:"[1, 2, 3]"

    • 範例2:"[\"a\", 1]"

    字典

    {"1":2, "3":4}

    字串

    "{\"1\": 2, \"3\": 4}"

    日期時間

    datetime(2018, 10, 10, 10, 10, 10)

    ISO格式字串

    2018-10-10 10:10:10

固定標識

資料加工預設了一些固定標識,以便簡化代碼或便於理解:

標識

類型

說明

true

布爾

真,等價於True

false

布爾

假,等價於False

null

None

無,等價於None

F_TAGS

字串

TAG欄位Regex,等價於"__tag__:.+"

F_META

字串

TAG__topic____source__欄位的Regex表示,等價於__tag__:.+|__topic__|__source__

F_TIME

字串

__time__欄位的名稱,等價於__time__

F_PACK_META

字串

pack meta欄位的Regex表示形式,等價於"__pack_meta__|__tag__:__pack_id__"

F_RECEIVE_TIME

字串

伺服器接收日誌的時間的tag欄位,等價於"__tag__:__receive_time__"

C_JOB_REGION

字串

資料加工任務所在地區ID,例如cn-hangzhou。例如e_set("job_region", C_JOB_REGION)表示將資料加工任務所在地區ID賦值給job_region欄位。

C_JOB_PROJECT

字串

資料加工任務所在Project名稱,例如my-sls-project。例如e_set("job_project", C_JOB_PROJECT)表示將資料加工任務所屬Project名稱賦值給job_project欄位。

C_JOB_NAME

字串

資料加工任務配置名稱,例如etl-1649227848-642277。例如e_set("job_name", C_JOB_NAME)表示將資料加工任務配置名稱賦值給job_name欄位。

C_JOB_ID

字串

資料加工任務運行ID,例如73b96061b8c1c2101d558139bf641ea9。例如e_set("job_id", C_JOB_ID)表示將資料加工任務運行ID賦值給job_id欄位。

JSON對象

JSON對象是指JSON運算式函數json_select或者json_parse解析提取後的對象,其由基本資料結構組成。輸入字串轉換成對應JSON對象的形式如下表所示:

字串

JSON對象

實際類型

1

1

整數

1.2

1.2

浮點

true

True

布爾

false

False

布爾

"abc"

"abc"

字串

null

None

None

["v1", "v2", "v3"]

["v1", "v2", "v3"]

列表

["v1", 3, 4.0]

["v1", 3, 4.0]

列表

{"v1": 100, "v2": "good"}

{"v1": 100, "v2": "good"}

字典

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

字典