赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. SPL语法

SPL语法

  • 操作指南
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文介绍日志服务SPL语言的基本信息,包括工作原理、语法、指令表达式等。

工作原理

日志服务SPL支持在Logtail采集、写入处理器、通过扫描(Scan)模式查询和分析日志、基于规则消费、数据加工(新版)、查询和分析日志等日志服务功能中使用,工作原理如下图:

说明

关于SPL在各个场景中的功能定义,请参见SPL在不同场景的功能定义和SPL数据处理案例。

SPL-SPL Doc - ch.jpeg

使用限制

类别

限制项

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语法结构如下:

  • 语法

    <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-cmd> ...。

;

SPL语句结束标识。单条语句,或多语句中最后一条的结束符可选。

'...'

字符串常量引用符号。

"..."

字段名称、字段名模式引用符号。

--

注释单行内容。

/*...*/

注释多行内容。

$

命名数据集引用符,语法格式为$<dataset-name>。

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

数组类型。元素访问使用[],元素访问下标从1开始。

例如* | extend a = ARRAY[0, 1, 2] | extend b = a[1]。

MAP

字典类型,键只能是基本数值类型,值可以是任意类型。元素访问使用[]。

例如* | extend a = MAP(ARRAY['foo', 'bar'], ARRAY[0, 1]) | extend b = a['foo']。

JSON类型

JSON

JSON类型。

SPL数据处理过程中的数据类型转换说明,请参见通用参考。

SPL指令表达式

指令表达式语法

cmd -option=<option> -option ... <expression>, ... as <output>, ...

参数说明

参数

说明

cmd

指令名称。

option

指令执行参数,可选。使用时必须指定参数名,参数名以中划线(-)开头,参数顺序无要求。

支持如下2种参数类别:

  • 键值参数-option=<option>:使用指令时以键值对的形式输入。

  • 开关参数-option:指令定义中默认均为关闭状态,添加该参数即表示打开开关。

expression

指令对数据源执行处理逻辑,必填。使用时,无需指定参数名,但参数顺序必须与指令的定义保持一致。

表达式类别:

  • SPL表达式

    • 字段名及其通配模式表达式,例如content。如果包含[a-zA-Z_]以外的字符,需要使用双引号("")包裹,例如"__tag__:__path__"。

    • 字段赋值表达式,直接对字段赋值例如level='INFO',或者将正则表达式的提取结果赋值给字段例如msg=regex_extract(content, '\S+')。

  • SQL表达式

    • 数据计算表达式返回值,例如cast(status as int)>=500。

output

处理结果中的输出字段。例如| parse-csv content as a, b, c。

指令概览

SPL支持如下指令。更多信息,请参见SPL指令。

指令类别

指令名称

说明

字段操作指令

project

保留与给定模式相匹配的字段、同时可重命名指定字段。指令执行过程中,先完成所有字段保留表达式的执行,再执行重命名表达式。

project-away

移除与给定模式相匹配的字段,原样保留其他所有字段。

project-rename

重命名指定字段,并保留其他所有字段原样。

expand-values

展开指定字段的第一层JSON对象,生成多条结果。

结构化数据SQL计算指令

extend

通过SQL表达式计算结果产生新字段。支持的SQL函数列表,请参见SPL支持的SQL函数列表。

where

根据SQL表达式过滤数据,保留满足SQL表达式的数据条目。where指令支持的SQL函数列表,请参见SPL支持的SQL函数列表。

弱结构化数据提取指令

parse-regexp

提取指定字段中的正则表达式分组匹配信息。

parse-csv

提取指定字段中的CSV格式的信息。

parse-json

提取指定字段中的第一层JSON信息。

parse-kv

提取指定字段中的键值对信息。

相关文章

数据处理 2025-04-22 11:06

如果您需要在日志数据写入Logstore前对数据进行处理,例如数据过滤、字段提取、字段扩展、数据脱敏,可以使用写入处理器(IngestProcessor)。 工作原理

告警 2025-04-22 11:06

日志服务告警是一站式的告警监控、降噪、事务管理、通知分派的智能运维平台。 产品架构 日志服务告警系统由告警监控、告警管理、通知(行动)管理等子系统组成,具体架构如下图所示:

SPL语法 2025-04-22 11:06

本文介绍日志服务SPL语言的基本信息,包括工作原理、语法、指令表达式等。

机器学习语法 2025-04-22 11:06

日志服务机器学习功能为您提供多种功能丰富的算法和便捷的调用方式,您可以在日志查询分析中通过分析语句和机器学习函数调用机器学习算法,分析某一字段或若干字段在一段时间内的特征。针对时序数据分析场景,日志服务提供了丰富的时序分析算法,可以帮助您快速解决时序预测、时序异常检测、序列分解、多时序聚类等场景问题

SLS案例中心 2025-04-22 11:05

日志服务SLS案例中心提供查询、分析、可视化、加工、开源兼容等相关的经典案例,帮助您更快上手日志服务。 操作步骤

资源管理概述 2025-04-22 11:05

日志服务提供控制台、API、SDK、CLI等方式管理日志项目(Project)、日志库(Logstore)等资源。 前提条件 拥有阿里云账号,未注册请参见注册阿里云

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号