时序SPL

更新时间:2025-03-21 08:21:20

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

什么是Series

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

Table模型的对比

对比维度

Table模型

Series模型

对比维度

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数据。

指令名称

说明

指令名称

说明

stats

用于计算数据集的统计信息,支持按分组字段聚合。

make-series

Table数据构建成Series数据。

render

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

SPL函数

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

函数名称

说明

函数名称

说明

second_to_nano函数

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

series_forecast函数

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

series_pattern_anomalies函数

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

series_decompose_anomalies函数

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

  • 本页导读 (1)
  • 什么是Series
  • 与Table模型的对比
  • 示例
  • SPL指令
  • SPL函数