本文介绍日志服务SPL语言的基本信息,包括工作原理、语法、指令表达式等。
SPL概述
对于读取出的原始数据,日志服务提供SPL语句(SLS Processing Language)做结构化信息提取、字段操作和数据过滤等操作。另外,日志服务还提供多级管道级联功能,第一级管道是索引过滤条件,后面的多级管道是SPL指令,最终输出经过SPL处理后的结果数据。如果您了解SQL语言的使用,您在不同数据处理需求场景中使用日志服务SPL时,可以参考SPL与SQL的使用场景对照。
工作原理
日志服务SPL支持在Logtail采集、写入处理器、基于规则消费、数据加工(新版)、扫描模式查询与分析(Scan)等日志服务功能中使用,工作原理如下图:
关于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语法结构如下:
数据源
日志服务在不同场景中使用 SPL,数据源的定义存在差异,细节如下:
功能类型 | LogStore索引过滤结果作为输入 | 字段名大小写敏感 | 全文字段__line__ | 最佳实践 |
Logtail采集 | 不支持。使用星号( | 敏感 | 不支持 | |
写入处理器 | 不支持。使用星号( | 敏感 | 不支持 | |
实时消费 | 不支持。使用星号( | 敏感 | 不支持 | |
数据加工(新版) | 不支持。使用星号( | 敏感 | 不支持 | |
扫描查询 | 支持。先执行索引过滤,过滤结果再执行SPL处理。比如 | 不敏感 | 支持 |
SPL指令表达式
SPL支持的指令请参见SPL指令与函数。
指令表达式语法
cmd -option=<option> -option ... <expression>, ... as <output>, ...参数说明
参数 | 说明 |
cmd | 指令名称。 |
option | 支持如下2种参数类别:
|
expression | 指令对数据源执行处理逻辑,必填。使用时,无需指定参数名,但参数顺序必须与指令的定义保持一致。 表达式类别:
|
output | 处理结果中的输出字段。例如 |
语法符号列表
在使用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数据处理过程中的数据类型转换说明,请参见通用参考。