本文介紹資料加工文法相關的資料結構及其說明。
基本資料結構
基本資料結構的不同類型和說明如下表所示:
類型 | 說明 |
整數 | 用於設定欄位值或者函數的參數傳遞。 例如 |
浮點 | 用於設定欄位值或者函數的參數傳遞。 例如 |
字串(String) | 字串說明如下:
說明 搜尋值只能使用半形雙引號("")包裹。您可以使用單引號('')包裹外層字串,使用半形雙引號("")包裹裡層搜尋值,例如: |
位元組 |
|
空 |
說明 Null 字元串與None、null的資料類型不同。 |
列表(List) | 數組,例如[1,2,3,4]。
|
元組(tuple) | 元組,與列表功能相同。例如 |
字典(Dict) | 形式為
|
布爾(Bool) | 例如 |
表格 | 多列的表格結構。您可以從外部資源中載入多行CSV格式內容構建表格,或者從RDS、Logstore中載入多列資料擷取。主要用於映射富化或其他進階配置情境。 |
日期時間對象 | 表示日期時間的記憶體對象,可以轉換為Unix字串或者格式化的時間字串,或者傳遞給其他 |
事件類型
相關事件類型和說明如下:
基本類型
資料加工將日誌資料以字典結構進行加工處理,例如
{"__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名為type:
e_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 | 布爾 | 真,等價於 |
false | 布爾 | 假,等價於 |
null | None | 無,等價於 |
F_TAGS | 字串 |
|
F_META | 字串 |
|
F_TIME | 字串 |
|
F_PACK_META | 字串 |
|
F_RECEIVE_TIME | 字串 | 伺服器接收日誌的時間的 |
C_JOB_REGION | 字串 | 資料加工任務所在地區ID,例如 |
C_JOB_PROJECT | 字串 | 資料加工任務所在Project名稱,例如 |
C_JOB_NAME | 字串 | 資料加工任務配置名稱,例如 |
C_JOB_ID | 字串 | 資料加工任務運行ID,例如 |
JSON對象
JSON對象是指JSON運算式函數json_select
或者json_parse
解析提取後的對象,其由基本資料結構組成。輸入字串轉換成對應JSON對象的形式如下表所示:
字串 | JSON對象 | 實際類型 |
|
| 整數 |
|
| 浮點 |
|
| 布爾 |
|
| 布爾 |
|
| 字串 |
|
| None |
|
| 列表 |
|
| 列表 |
|
| 字典 |
|
| 字典 |