时序SPL
在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
离散时间点聚合结果示例:
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
连续时间序列可视化示例:
SPL指令
SPL指令用于将Table数据转换为Series数据。
指令名称 | 说明 |
将Table数据构建成Series数据。 | |
将SPL查询结果渲染为图表以实现可视化。 |
SPL函数
函数名称 | 说明 |
时间转换函数:将秒级时间戳转为纳秒级,适用于高精度场景。 | |
时间序列预测函数:基于历史数据预测未来趋势,适用于监控、分析和规划。 | |
异常检测函数:基于机器学习算法,识别时间序列中的异常点或异常模式,适用于监控、告警和数据分析等场景。 | |
时间序列分解与异常检测函数:基于时间序列分解算法,将原始数据拆分为趋势、季节性和残差分量,并通过统计方法分析残差分量以识别异常点,适用于实时监控、根因分析及数据质量检测等场景。 | |
用于时间序列分析的下钻函数,允许在时间分组统计的基础上,进一步对特定时间段内的数据进行细粒度分析。 | |
支持对多条时间序列(或向量数据)进行快速分组分析,识别相似形态的指标曲线、检测异常模式或归类数据模式。 | |
一种用于时间序列分析的函数。该函数从多个维度对时间序列进行分析并返回结果,具体包括:数据是否连续、数据缺失情况、序列是否稳定、序列是否具有周期性及周期长度、以及序列是否存在显著趋势。 | |
用于计算两个对象之间的相似度。具体功能包括: 1. 如果两个对象均为单个向量,返回两序列的相似度。 2. 如果一个对象是向量组,另一个是单个向量,返回向量组中每个向量与该单个向量的相似度。 3. 如果两个对象均为向量组,返回两组向量之间两两相似度的矩阵。 |