SPL指令

更新时间:2025-03-31 08:46:22

本文主要介绍时序SPL指令的详细信息。

SPL指令列表

指令名称

说明

指令名称

说明

make-series

Table数据构建成Series数据。

render

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

make-series

table构建为series结构。

语法

| make-series  <output> = <field-col> [default = <default-value>]
             [, ...]
             on <time-col>
             [from <time-begin> to <time-end>
              step <step-value>]
             [by <tag-col>,...]

指令块

指令块

必填

说明

指令块

必填

说明

<output> = <field-col> , ...

被转换为series的字段列,可以选择多列。

on <time-col>

时间含义的字段列。

[default = <default-value>]

&

[from <time-begin> to <time-end>

step <step-value>]

根据time列进行缺失值填充。包含截取的time范围、填充步长和填充策略。

[by <tag-col>,...]

按指定的tag列作聚合。

参数说明

参数

类型

说明

参数

类型

说明

output

Field

输出聚合后的字段。

field-col

Field

输入的字段列。

default-value

String

缺失值填充方式。

可选值:

  • null: 以null填补缺失的数据点。

  • nan:以nan填补缺失的浮点数。

  • 0:以0填补缺失的数据点。

  • last:使用最后观察到的值来填补缺失的数据点,也称为前向填充。前向填充适用于当您预期缺失的数据在新的观察出现之前逻辑上保持最后已知状态的情况下。它通常用于值被认为在更新之前保持不变的场景。

  • next:使用下一个观察到的值来填补缺失的数据点,也称为后向填充。适用于当数据可能被认为在某个未来状态下存在,然后才被明确观察到的情况。当历史值被认为与下一个观察值相同时,可以使用后向填充。

  • avg:使用前一个时间点和后一个时间点的平均值来填补缺失的数据点。

time-col

Field

输入的时间列。

time-begin

String or Field

期望得到的时间列范围,起始点。

可选参数为:

  • 具体字段名。类型为 bigint 的字段,其中的值为起始点,单位为纳秒。

  • min:使用每行时间序列的最小值作为起始点。

  • sls_begin_time:使用查询的起始时间作为每行时间序列的起始点。

time-end

String or Field

期望得到的时间列范围,结束点。可选参数为:

  • 具体字段名。类型为 bigint 的字段,其中的值为结束点,单位为纳秒。

  • 'min':使用每行时间序列的最大值作为结束点。

  • 'sls_begin_time':使用查询的结束时间作为每行时间序列的结束点。

step-value

String

缺失值填充步长。

可选单位: s(秒)、m(分钟)、h(小时)、d(天)、w(周)。

tag-col

Field

按该字段值进行聚合。

示例

将原始数据中的时间点构造为时间线,并填充缺失点。

  • 原始数据

    对不同的 Method,将时间戳按60s对齐,并计算出60s时间窗口内的聚合指标,得到时间点。

    • SPL语句

      * | extend ts = second_to_nano(__time__ - __time__ % 60)
        | stats latency_avg = avg(cast(latency as double)), inflow_avg = avg(cast (inflow as double)) by ts, Method
    • 输出结果

      image.png

  • SPL语句

    * | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(latency as double)), inflow_avg = min(cast (inflow as double)) by ts, Method
      | make-series   latency_avg default = 'last',
                    inflow_avg default = 'last'
                    on ts
                    from 'min' to 'max'
                    step '1m'
                    by Method
  • 输出结果

    image

render

SPL查询结果渲染为图表进行可视化。

  • render指令必须位于SPL查询的最后一个运算符。

  • render指令不修改数据,只将可视化参数添加到查询结果的拓展属性中。

语法

render visualization [with ( propertyName = propertyValue [, ...])]

指令块

指令块

必填

说明

指令块

必填

说明

visualization

指示要使用的可视化图表类型。支持的类型请参见Visualization

propertyName = propertyValue

键值属性对的分隔列表。请参考下文的属性列表。

参数说明

Visualization

Visualization

Description

Visualization

Description

linechart

线图

Properties

PropertyName/PropertyValue 键值对指示渲染图表时要使用的额外信息。所有属性都是可选的。支持的属性:

渲染时序预测图的参数配置

PropertyName

PropertyValue

PropertyName

PropertyValue

xcolumn

查询结果中作为x轴的列名。

ycolumns

查询结果中作为y轴的列名列表,以逗号分隔。

例如:

... ...
| render linechart with (xcolumn=time_series,
                         ycolumns=metric_series, forecast_metric_series)
渲染异常检测图的参数配置

PropertyName

PropertyValue

PropertyName

PropertyValue

xcolumn

查询结果中作为 x 轴的列名。

ycolumns

查询结果中作为 y 轴的列名列表,以逗号分隔。

anomalyscore

在图表上显示异常点的异常分数,仅作用于linechart。

anomalytype

在图表上显示异常点的异常类型,仅作用于linechart。

例如:

... ...
| render linechart with (xcolumn=ts,
                         ycolumns=mem_arr, cpu_arr,
                         anomalyscore = anomalies_score_series,
                         anomalytype = anomalies_type_series)

示例

对所有时间线异常检测之后,保留最近 5 min 异常分数值,渲染异常检测图。

  • SPL语句

    * 
    | extend ts= (__time__- __time__%60)*1000000000
    | where Method='PostLogStoreLogs'
    | stats latency_avg=avg(cast( Latency as bigint)) by ts, Method
    | make-series   latency_avg = latency_avg default = 'null'
                    on ts
                    from 'min' to 'max'
                    step '1m'
                    by Method
    | extend ret = series_decompose_anomalies(latency_avg)
    | extend anomalies_score_series = ret.anomalies_score_series, anomalies_type_series = ret.anomalies_type_series, error_msg = ret.error_msg
    | render linechart with (xcolumn=__ts__,
                             ycolumns=latency_avg,
                             anomalyscore = anomalies_score_series,
                             anomalytype = anomalies_type_series)
  • 输出结果

    image

  • 本页导读 (1)
  • SPL指令列表
  • make-series
  • 语法
  • 指令块
  • 参数说明
  • 示例
  • render
  • 语法
  • 指令块
  • 参数说明
  • 示例