本文介绍日志服务SPL基础语法。
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数据处理过程中的数据类型转换说明,请参见通用参考。