數(shù)據(jù)結(jié)構
本文介紹數(shù)據(jù)加工語法相關的數(shù)據(jù)結(jié)構及其說明。
基本數(shù)據(jù)結(jié)構
基本數(shù)據(jù)結(jié)構的不同類型和說明如下表所示:
類型 | 說明 |
整數(shù) | 用于設置字段值或者函數(shù)的參數(shù)傳遞。 例如 |
浮點 | 用于設置字段值或者函數(shù)的參數(shù)傳遞。 例如 |
字符串(String) | 字符串說明如下:
說明 搜索值只能使用半角雙引號("")包裹。您可以使用單引號('')包裹外層字符串,使用半角雙引號("")包裹里層搜索值,例如: e_search("domain: '/url/test.jsp'") 是錯誤的,正確的為e_search('domain: "/url/test.jsp"') 。 |
字節(jié) |
|
空 |
說明 空字符串與None、null的數(shù)據(jù)類型不同。 |
列表(List) | 數(shù)組,例如[1,2,3,4]。
|
元組(tuple) | 元組,與列表功能相同。例如 |
字典(Dict) | 形式為
|
布爾(Bool) | 例如 |
表格 | 多列的表格結(jié)構。您可以從外部資源中加載多行CSV格式內(nèi)容構建表格,或者從RDS、Logstore中加載多列數(shù)據(jù)獲取。主要用于映射富化或其他高級配置場景。 |
日期時間對象 | 表示日期時間的內(nèi)存對象,可以轉(zhuǎn)換為Unix字符串或者格式化的時間字符串,或者傳遞給其他 |
事件類型
相關事件類型和說明如下:
基本類型
數(shù)據(jù)加工將日志數(shù)據(jù)以字典結(jié)構進行加工處理,例如
{"__topic__": "access_log", "content": "....."}
。字典的關鍵字和值,對應日志的字段和值。
說明事件的關鍵字和值都是字符串且關鍵字不能重復。
元字段
元字段主要包含如下三部分:
時間字段
__time__
:寫入日志數(shù)據(jù)時指定的日志時間。數(shù)據(jù)類型為整數(shù)字符串,Unix標準時間格式。單位為秒,表示從1970-1-1 00:00:00 UTC計算起的秒數(shù)。主題
__topic__
:日志庫內(nèi)的日志可以通過日志主題來劃分。您可以在寫入時指定日志主題,并在查詢時指定查詢的日志主題。源
__source__
:日志的來源,例如產(chǎn)生該日志機器的IP地址。
時間字段修改
修改時間字段的值,就是修改日志的事件時間。可以用日期時間函數(shù)對其進行更多的操作。
說明如果刪除了時間字段,在輸出日志時,會取數(shù)據(jù)加工處理數(shù)據(jù)時的系統(tǒng)時間作為新的事件時間。
標簽
標簽(tag)指日志存在標記,用于區(qū)分字段。標簽會以
__tag__:名稱
關鍵字的格式存在。如果源Logstore打開了記錄外網(wǎng)IP功能,則會存在
tag:__tag__:__receive_time__
。容器服務的日志會存在許多容器類的tag,例如
__tag__:__container_name__
。可以添加、修改tag。例如添加一個tag名為type:
e_set("__tag__:type", "access_log")
。
賦值自動轉(zhuǎn)換
事件的關鍵字和值都是字符串,因此對事件進行賦值或者設置新的字段值時,會自動對關鍵字和值進行字符串轉(zhuǎn)換。例如:
e_set("v1", 12.3) e_set("v2", True)
將字段
v1
的值設置為字符串12.3,將字段v2
值設置為字符串true。如下為各數(shù)據(jù)類型轉(zhuǎn)換為字符串示例:
類型
樣例
轉(zhuǎn)換類型
轉(zhuǎn)換樣例
整數(shù)
1
字符串
"1"
浮點
1.2
字符串
"1.2"
布爾
True
字符串
"true"
字節(jié)
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
固定標識
數(shù)據(jù)加工預設了一些固定標識,以便簡化代碼或便于理解:
標識 | 類型 | 說明 |
true | 布爾 | 真,等價于 |
false | 布爾 | 假,等價于 |
null | None | 無,等價于 |
F_TAGS | 字符串 |
|
F_META | 字符串 |
|
F_TIME | 字符串 |
|
F_PACK_META | 字符串 |
|
F_RECEIVE_TIME | 字符串 | 服務器接收日志的時間的 |
C_JOB_REGION | 字符串 | 數(shù)據(jù)加工任務所在地域ID,例如 |
C_JOB_PROJECT | 字符串 | 數(shù)據(jù)加工任務所在Project名稱,例如 |
C_JOB_NAME | 字符串 | 數(shù)據(jù)加工任務配置名稱,例如 |
C_JOB_ID | 字符串 | 數(shù)據(jù)加工任務運行ID,例如 |
JSON對象
JSON對象是指JSON表達式函數(shù)json_select
或者json_parse
解析提取后的對象,其由基本數(shù)據(jù)結(jié)構組成。輸入字符串轉(zhuǎn)換成對應JSON對象的形式如下表所示:
字符串 | JSON對象 | 實際類型 |
|
| 整數(shù) |
|
| 浮點 |
|
| 布爾 |
|
| 布爾 |
|
| 字符串 |
|
| None |
|
| 列表 |
|
| 列表 |
|
| 字典 |
|
| 字典 |