时序SPL

更新时间: 2025-05-19 10:33:54

在Logstore中存在很多时序数据,日志服务支持通过时序SPL指令和SPL函数处理Logstore中的时序数据。

什么是Series

Series是由时间维度序列和指标维度序列组成的二维数据结构,适用于表达随时间变化的观测值集合。和Series相对应的是Table数据。

与Table模型的对比

对比维度

Table模型

Series模型

数据组织方式

离散时间点记录(行式存储)

连续时间序列(列式存储)

查询模式

基于离散点的聚合计算

支持滑动窗口等时序运算

存储效率

适合低频离散事件

优化高频连续指标存储

示例

以Nginx访问日志分析为例,计算URI维度的分钟级平均响应时间。

Table模型

* 
| extend ts =  to_unixtime(date_trunc('hour',date_parse(time_local, '%d/%b/%Y:%H:%i:%s')))
| stats avg_latency = avg(cast(upstream_response_time as double)) by ts,request_uri

离散时间点聚合结果示例:

image.png

Series模型实现

* 
| stats avg_latency=avg(cast(upstream_response_time as double)) by time_local, request_uri
| make-series avg_latency default = 'last'
    on time_local 
    from 'sls_begin_time' to 'sls_end_time' 
    step '1m' 
    by request_uri

连续时间序列可视化示例:

image

SPL指令

SPL指令用于将Table数据转换为Series数据。

指令名称

说明

make-series

将Table数据构建成Series数据。

render

将SPL查询结果渲染为图表以实现可视化。

SPL函数

通过处理数据得到serie后,可调用SPL函数进行可视化。

函数名称

说明

second_to_nano函数

时间转换函数:将秒级时间戳转为纳秒级,适用于高精度场景。

series_forecast函数

时间序列预测函数:基于历史数据预测未来趋势,适用于监控、分析和规划。

series_pattern_anomalies函数

异常检测函数:基于机器学习算法,识别时间序列中的异常点或异常模式,适用于监控、告警和数据分析等场景。

series_decompose_anomalies函数

时间序列分解与异常检测函数:基于时间序列分解算法,将原始数据拆分为趋势、季节性和残差分量,并通过统计方法分析残差分量以识别异常点,适用于实时监控、根因分析及数据质量检测等场景。

series_drilldown函数

用于时间序列分析的下钻函数,允许在时间分组统计的基础上,进一步对特定时间段内的数据进行细粒度分析。

cluster函数

支持对多条时间序列(或向量数据)进行快速分组分析,识别相似形态的指标曲线、检测异常模式或归类数据模式。

series_describe函数

一种用于时间序列分析的函数。该函数从多个维度对时间序列进行分析并返回结果,具体包括:数据是否连续、数据缺失情况、序列是否稳定、序列是否具有周期性及周期长度、以及序列是否存在显著趋势。

correlation函数

用于计算两个对象之间的相似度。具体功能包括: 1. 如果两个对象均为单个向量,返回两序列的相似度。 2. 如果一个对象是向量组,另一个是单个向量,返回向量组中每个向量与该单个向量的相似度。 3. 如果两个对象均为向量组,返回两组向量之间两两相似度的矩阵。

上一篇: 机器学习语法 下一篇: SPL指令
阿里云首页 日志服务 相关技术圈