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