本文介紹Simple Log ServiceSPL語言的基本資料,包括工作原理、文法、指令運算式等。
工作原理
Log ServiceSPL支援在Logtail採集、寫入處理器、通過掃描(Scan)模式查詢和分析日誌、基於規則消費、資料加工(新版)、查詢和分析日誌等Log Service功能中使用,工作原理如下圖:
關於SPL在各個情境中的功能定義,請參見SPL在不同情境的功能定義和SPL資料處理案例。
使用限制
類別 | 限制項 | Logtail採集 | 寫入處理器 | 即時消費 | 資料加工(新版) | 掃描查詢 |
SPL複雜度 | 指令碼管道級數 | 16級 | 16級 | 16級 | 16級 | 16級 |
指令碼長度 | 64KB | 64KB | 10KB | 10KB | 64KB | |
SPL運行時 | 運行記憶體大小 重要 處理方案請參見錯誤處理。 | 50MB | 1GB | 1GB | 1GB | 2GB |
運行逾時 重要 處理方案請參見錯誤處理。 | 1秒 | 5秒 | 5秒 | 5秒 | 2秒 |
SPL文法
SPL語句
SPL語句是多級資料處理語句,通過英文管道符(|)串連,以英文分號(;)作為語句結束符。SPL文法結構如下:
文法
<data-source> | <spl-expr> | <spl-expr> ;
參數說明
參數
說明
data-source
資料來源,包括SLS Logstore,以及SPL定義的資料集。
例如
* | project status, body
。在不同情境中的SPL資料來源,請參見SPL在不同情境的功能定義。
spl-expr
SPL資料處理運算式,詳情請參見SPL指令運算式。
文法符號列表
符號 | 說明 |
* | SLS Logstore資料作為SPL輸入資料時的預留位置。 |
. | 作為SPL語句的第一個字元時,表示SPL文法關鍵字。 |
| | SPL管道符,用於引出SPL指令運算式,文法格式為 |
; | SPL語句結束標識。單條語句,或多語句中最後一條的結束符可選。 |
'...' | 字串常量引用符號。 |
"..." | 欄位名稱、欄位名模式引用符號。 |
-- | 注釋單行內容。 |
/*...*/ | 注釋多行內容。 |
SPL資料類型
SPL資料類型說明如下表所示:
類型類別 | 類型名稱 | 類型說明 |
基本數實值型別 | BOOLEAN | 布爾類型。 |
TINYINT | 寬度為8位的整數類型。 | |
SMALLINT | 寬度為16位的整數類型。 | |
INTEGER | 寬度為32位的整數類型。 | |
BIGINT | 寬度為64位的整數類型。 | |
HUGEINT | 寬度為128位的整數類型。 | |
REAL | 寬度為32位可變精度浮點數類型。 | |
DOUBLE | 寬度為64位可變精度浮點數類型。 | |
TIMESTAMP | 精度為納秒的UNIX時間戳記類型。 | |
DATE | 日期資料類型,格式為YYYY-MM-DD。 | |
VARCHAR | 可變長度字元資料類型。 | |
VARBINARY | 可變長度位元據類型。 | |
結構化數實值型別 | ARRAY | 數群組類型。元素訪問使用 例如 |
MAP | 字典類型,鍵只能是基本數實值型別,值可以是任意類型。元素訪問使用 例如 | |
JSON類型 | JSON | JSON類型。 |
SPL資料處理過程中的資料類型轉換說明,請參見通用參考。
SPL指令運算式
指令運算式文法
cmd -option=<option> -option ... <expression>, ... as <output>, ...
參數說明
參數 | 說明 |
cmd | 指令名稱。 |
option | 支援如下2種參數類別:
|
expression | 指令對資料來源執行處理邏輯,必填。使用時,無需指定參數名,但參數順序必須與指令的定義保持一致。 運算式類別:
|
output | 處理結果中的輸出欄位。例如 |
指令概覽
SPL支援如下指令。更多資訊,請參見SPL指令。
指令類別 | 指令名稱 | 說明 |
欄位操作指令 | 保留與給定模式相匹配的欄位、同時可重新命名指定欄位。指令執行過程中,先完成所有欄位保留運算式的執行,再執行重新命名運算式。 | |
移除與給定模式相匹配的欄位,原樣保留其他所有欄位。 | ||
重新命名指定欄位,並保留其他所有欄位原樣。 | ||
展開指定欄位的第一層JSON對象,產生多條結果。 | ||
結構化資料SQL計算指令 | 通過SQL運算式計算結果產生新欄位。支援的SQL函數列表,請參見SPL支援的SQL函數列表。 | |
根據SQL運算式過濾資料,保留滿足SQL運算式的資料條目。where指令支援的SQL函數列表,請參見SPL支援的SQL函數列表。 | ||
弱結構化資料提取指令 | 提取指定欄位中的Regex分組匹配資訊。 | |
提取指定欄位中的CSV格式的資訊。 | ||
提取指定欄位中的第一層JSON資訊。 | ||
提取指定欄位中的索引值對資訊。 |