SPL語法
本文介紹日志服務(wù)SPL語言的基本信息,包括工作原理、語法、指令表達式等。
工作原理
日志服務(wù)SPL支持在Logtail采集、寫入處理器、通過掃描(Scan)模式查詢和分析日志、基于規(guī)則消費、數(shù)據(jù)加工(新版)、查詢和分析日志等日志服務(wù)功能中使用,工作原理如下圖:
關(guān)于SPL在各個場景中的功能定義,請參見SPL在不同場景的功能定義和SPL數(shù)據(jù)處理案例。
使用限制
類別 | 限制項 | Logtail采集 | 寫入處理器 | 實時消費 | 數(shù)據(jù)加工(新版) | 掃描查詢 |
SPL復雜度 | 腳本管道級數(shù) | 16級 | 16級 | 16級 | 64級 | 16級 |
腳本長度 | 64KB | 64KB | 64KB | 128KB | 64KB | |
SPL運行時 | 運行內(nèi)存大小 重要 處理方案請參見錯誤處理。 | 50MB | 1GB | 1GB | 1GB | 2GB |
運行超時 重要 處理方案請參見錯誤處理。 | 1秒 | 5秒 | 5秒 | 5秒 | 2秒 |
SPL語法
SPL語句
SPL語句是多級數(shù)據(jù)處理語句,通過英文管道符(|)連接,以英文分號(;)作為語句結(jié)束符。SPL語法結(jié)構(gòu)如下:
語法
<data-source> | <spl-expr> | <spl-expr> ;
參數(shù)說明
參數(shù)
說明
data-source
數(shù)據(jù)源,包括SLS Logstore,以及SPL定義的數(shù)據(jù)集。
例如
* | project status, body
。在不同場景中的SPL數(shù)據(jù)源,請參見SPL在不同場景的功能定義。
spl-expr
SPL數(shù)據(jù)處理表達式,詳情請參見SPL指令表達式。
語法符號列表
符號 | 說明 |
* | SLS Logstore數(shù)據(jù)作為SPL輸入數(shù)據(jù)時的占位符。 |
. | 作為SPL語句的第一個字符時,表示SPL語法關(guān)鍵字。 |
| | SPL管道符,用于引出SPL指令表達式,語法格式為 |
; | SPL語句結(jié)束標識。單條語句,或多語句中最后一條的結(jié)束符可選。 |
'...' | 字符串常量引用符號。 |
"..." | 字段名稱、字段名模式引用符號。 |
-- | 注釋單行內(nèi)容。 |
/*...*/ | 注釋多行內(nèi)容。 |
SPL數(shù)據(jù)類型
SPL數(shù)據(jù)類型說明如下表所示:
類型類別 | 類型名稱 | 類型說明 |
基本數(shù)值類型 | BOOLEAN | 布爾類型。 |
TINYINT | 寬度為8位的整數(shù)類型。 | |
SMALLINT | 寬度為16位的整數(shù)類型。 | |
INTEGER | 寬度為32位的整數(shù)類型。 | |
BIGINT | 寬度為64位的整數(shù)類型。 | |
HUGEINT | 寬度為128位的整數(shù)類型。 | |
REAL | 寬度為32位可變精度浮點數(shù)類型。 | |
DOUBLE | 寬度為64位可變精度浮點數(shù)類型。 | |
TIMESTAMP | 精度為納秒的UNIX時間戳類型。 | |
DATE | 日期數(shù)據(jù)類型,格式為YYYY-MM-DD。 | |
VARCHAR | 可變長度字符數(shù)據(jù)類型。 | |
VARBINARY | 可變長度二進制數(shù)據(jù)類型。 | |
結(jié)構(gòu)化數(shù)值類型 | ARRAY | 數(shù)組類型。元素訪問使用 例如 |
MAP | 字典類型,鍵只能是基本數(shù)值類型,值可以是任意類型。元素訪問使用 例如 | |
JSON類型 | JSON | JSON類型。 |
SPL數(shù)據(jù)處理過程中的數(shù)據(jù)類型轉(zhuǎn)換說明,請參見通用參考。
SPL指令表達式
指令表達式語法
cmd -option=<option> -option ... <expression>, ... as <output>, ...
參數(shù)說明
參數(shù) | 說明 |
cmd | 指令名稱。 |
option | 支持如下2種參數(shù)類別:
|
expression | 指令對數(shù)據(jù)源執(zhí)行處理邏輯,必填。使用時,無需指定參數(shù)名,但參數(shù)順序必須與指令的定義保持一致。 表達式類別:
|
output | 處理結(jié)果中的輸出字段。例如 |
指令概覽
SPL支持如下指令。更多信息,請參見SPL指令。
指令類別 | 指令名稱 | 說明 |
字段操作指令 | project | 保留與給定模式相匹配的字段、重命名指定字段。 |
project-away | 移除與給定模式相匹配的字段,原樣保留其他所有字段。 | |
project-rename | 重命名指定字段,并原樣保留其他所有字段。 | |
結(jié)構(gòu)化數(shù)據(jù)SQL計算指令 | extend | 通過SQL表達式計算結(jié)果產(chǎn)生新字段。 支持的SQL函數(shù)列表,請參見SPL支持的SQL函數(shù)列表。 |
where | 根據(jù)SQL表達式計算結(jié)果過濾數(shù)據(jù)條目。 支持的SQL函數(shù)列表,請參見SPL支持的SQL函數(shù)列表。 | |
弱結(jié)構(gòu)化數(shù)據(jù)提取指令 | parse-csv | 提取指定字段中的CSV格式信息。 |
parse-json | 提取指定字段中的第一層JSON信息。 | |
parse-regexp | 提取指定字段中的正則表達式分組匹配信息。 |