本文介紹Simple Log ServiceSPL語言的基本資料,包括工作原理、文法、指令運算式等。
工作原理
Log ServiceSPL支援在即時消費、掃描查詢和Logtail採集三個Log Service情境中使用,工作原理如下圖:
關於SPL在各個情境中的功能定義,請參見SPL在不同情境的功能定義。支援使用Log ServiceSPL的阿里雲地區,請參見支援地區。
使用限制
類別 | 限制項 | 即時消費 | 掃描查詢 | Logtail採集 |
SPL複雜度 | 指令碼管道級數 | 16級 | 16級 | 16級 |
指令碼長度 | 64KB | 64KB | 64KB | |
SPL運行時 | 運行記憶體大小 重要 處理方案請參見錯誤處理。 | 1GB | 2GB | 50MB |
運行逾時 重要 處理方案請參見錯誤處理。 | 1秒 | 2秒 | 1秒 |
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支援如下指令。
指令類別 | 指令名稱 | 說明 |
欄位操作指令 | project | 保留與給定模式相匹配的欄位、重新命名指定欄位。 |
project-away | 移除與給定模式相匹配的欄位,原樣保留其他所有欄位。 | |
project-rename | 重新命名指定欄位,並原樣保留其他所有欄位。 | |
結構化資料SQL計算指令 | extend | 通過SQL運算式計算結果產生新欄位。 支援的SQL函數列表,請參見SPL支援的SQL函數列表。 |
where | 根據SQL運算式計算結果過濾資料條目。 支援的SQL函數列表,請參見SPL支援的SQL函數列表。 | |
弱結構化資料提取指令 | parse-csv | 提取指定欄位中的CSV格式資訊。 |
parse-json | 提取指定欄位中的第一層JSON資訊。 | |
parse-regexp | 提取指定欄位中的Regex分組匹配資訊。 |