全部產品
Search
文件中心

Simple Log Service:SPL函數

更新時間:Jan 06, 2026

LogStore中的時序資料通過SPL指令處理後,可以調用時序SPL函數進行結果可視化。

函數列表

函數名稱

說明

second_to_nano函數

時間轉換函式:將秒級時間戳記轉為納秒級,適用於高精度情境。

series_forecast函數

時間序列預測函數:基於歷史資料預測未來趨勢,適用於監控、分析和規劃。

series_pattern_anomalies函數

異常檢測函數:基於機器學習演算法,識別時間序列中的異常點或異常模式,適用於監控、警示和資料分析等情境。

series_decompose_anomalies函數

時間序列分解與異常檢測函數:基於時間序列分解演算法,將未經處理資料拆分為趨勢、季節性和殘差分量,並通過統計方法分析殘差分量以識別異常點,適用於即時監控、根因分析及資料品質檢測等情境。

series_drilldown函數

用於時間序列分析的下鑽函數,允許在時間分組統計的基礎上,進一步對特定時間段內的資料進行細粒度分析。

cluster函數

支援對多條時間序列(或向量資料)進行快速分組分析,識別相似形態的指標曲線、檢測異常模式或歸類資料模式。

series_describe函數

一種用於時間序列分析的函數。該函數從多個維度對時間序列進行分析並返回結果,具體包括:資料是否連續、資料缺失情況、序列是否穩定、序列是否具有周期性及周期長度、以及序列是否存在顯著趨勢。

correlation函數

用於計算兩個對象之間的相似性。具體功能包括: 1. 如果兩個對象均為單個向量,返回兩序列的相似性。 2. 如果一個對象是向量組,另一個是單個向量,返迴向量組中每個向量與該單個向量的相似性。 3. 如果兩個對象均為向量組,返回兩組向量之間兩兩相似性的矩陣。

second_to_nano函數

時間轉換函式,用於將秒級時間戳記轉換為納秒級時間戳記。它通常用於處理日誌中的時間欄位,尤其是在需要更高精度時間戳記的情境下。

重要
  • 精度:確保資料庫和應用程式支援足夠的精度,以處理納秒層級的時間資料。

  • 資料類型:需要選擇合適的資料類型來儲存納秒級的資料,比如 BIGINT,以避免溢出或精度丟失。

文法

second_to_nano(seconds)

參數說明

參數

說明

seconds

秒級時間戳記(可以是整數或浮點數)。

傳回值

返回對應的納秒級時間戳記(以整數形式表示)。

樣本

統計不同時間段(納秒級)不同請求的數量。

  • 查詢分析語句

    * | extend ts = second_to_nano(__time__)
    | stats count=count(*) by ts,request_method
  • 輸出結果

    image

series_forecast函數

用於時間序列預測。它基於歷史時間序列資料,利用機器學習演算法對未來的時間點進行預測。該函數常用於監控、趨勢分析和容量規劃等情境。

使用限制

  • 已經通過make-series構造出series格式資料,並且時間單位為納秒。

  • 每行的時間點數量至少為31個 。

文法

series_forecast(array(T) field, bigint periods)

series_forecast(array(T) field, bigint periods, varchar params)

參數說明

參數

說明

field

輸入時間序列的指標列。

periods

期望預測結果中時間點的數量。

params

可選。演算法參數,json 格式。

傳回值

row(
  time_series array(bigint),
  metric_series array(double),
  forecast_metric_series array(double),
  forecast_metric_upper_series array(double),
  forecast_metric_lower_series array(double),
  forecast_start_index bigint,
  forecast_length bigint,
  error_msg varchar)

列名

類型

說明

time_series

array(bigint)

納秒級時間戳記數組。包含輸入時間段的時間戳記和預測時間段的時間戳記。

metric_series

array(double)

metric 數組,長度和 time_series 一致。

對原始輸入 metric 進行修改(修改 NaN 等)並用 NaN 擴充預測時間段。

forecast_metric_series

array(double)

預測結果數組,長度和 time_series 一致。

包含對輸入 metric 的擬合值以及預測時間段的預測值。

forecast_metric_upper_series

array(double)

預測結果上界數組,長度和 time_series 一致。

forecast_metric_lower_series

array(double)

預測結果下界數組,長度和 time_series 一致。

forecast_start_index

bigint

表示時間戳記數組中預測時間段的起始下標。

forecast_length

bigint

表示時間戳記數組中預測時間段時間點的數量。

error_msg

varchar

錯誤資訊。為 null 則表示該行時間序列預測成功,否則展示失敗原因。

樣本

統計不同request_method接下來10個時間點的數量。

  • SPL語句

    * | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method
      | make-series   latency_avg  default = 'last',
                    inflow_avg default = 'last'
                    on ts 
                    from 'min' to 'max'
                     step '1m' 
                    by request_method
     | extend test=series_forecast(inflow_avg, 10)
  • 輸出結果

    image

演算法參數

參數

說明

"pred":"10min"

期望預測結果中時間點的間隔, 單位支援

D        daily frequency
H        hourly frequency
T, min   minutely frequency
S        secondly frequency

"uncertainty_config": {"interval_width": 0.9999}

  • uncertainty_config.interval_width 取值範圍是 (0, 1),取值越大預測結果中上下界之間的範文越大

"seasonality_config":

{"seasons": [{"name": "month", "period": 30.5, "fourier_order": 1}]}

  • seasonality_config.seasons 中包含自訂的時序周期

    • name 周期名稱

    • periods 每一個周期包含多少天

    • fourier_order 周期擬合強度

  • 服務預設設定了天、周和年周期,如果需要擬合其他周期,在 seasonality_config.seasons 中配置

series_pattern_anomalies函數

用於檢測時間序列資料中異常模式。它基於機器學習演算法,能夠自動識別時間序列中的異常點或異常模式,適用於監控、警示和資料分析等情境。

使用限制

  • 已經通過make-series構造出series格式資料,並且時間單位為納秒。

  • 每行的時間點數量至少為11個 。

文法

series_pattern_anomalies(array(T) metric_series)

參數說明

參數

說明

metric_series

輸入時間序列的指標列,僅支援數實值型別。

傳回值

row(
  anomalies_score_series array(double),
  anomalies_type_series array(varchar)
  error_msg varchar
) 

列名

類型

說明

anomalies_score_series

array(double)

異常分數序列,與輸入時間序列相對應。範圍為 [0,1] 代表每個時間點的異常分數。

anomalies_type_series

array(varchar)

異常類型描述序列,與輸入時間序列相對應。代表每個時間點的異常類型。非異常的時間點表示為null。

error_msg

varchar

錯誤資訊。值為null則表示該行時間序列異常檢測成功,否則展示失敗原因。

樣本

檢測目前時間點的序列是否有異常。

  • SPL語句

    * | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method
      | where request_method is not null
      | make-series   latency_avg  default = 'last',
                    inflow_avg default = 'last'
                    on ts 
                    from 'min' to 'max'
                     step '1m' 
                    by request_method
     | extend test=series_pattern_anomalies(inflow_avg)
  • 輸出結果

    image

series_decompose_anomalies函數

用於時間序列分解和異常檢測的函數。它基於時間序列分解演算法,將原始時間序列資料拆分為趨勢分量、季節性分量和殘差分量,並通過分析殘差分量來檢測異常點。

使用限制

  • 已經通過make-series構造出series格式資料,並且時間單位為納秒。

  • 每行的時間點數量至少為11個 。

文法

series_decompose_anomalies(array(T) metric_series)

series_decompose_anomalies(array(T) metric_series, varchar params)

參數說明

參數

說明

metric_series

輸入時間序列的指標列。

params

可選。演算法參數,json 格式。

傳回值

row(
  metric_baseline_series array(double)
  anomalies_score_series array(double),
  anomalies_type_series array(varchar)
  error_msg varchar
) 

列名

類型

說明

metric_baseline_series

array(double)

演算法擬合的 metric 資料。

anomalies_score_series

array(double)

異常分數序列,與輸入時間序列相對應。範圍為 [0,1] 代表每個時間點的異常分數。

anomalies_type_series

array(varchar)

異常類型描述序列,與輸入時間序列相對應。代表每個時間點的異常類型。非異常的時間點表示為 null。

error_msg

varchar

錯誤資訊。值為null則表示該行時間序列異常檢測成功,否則展示失敗原因。

樣本

對所有時間軸異常檢測之後,保留最近 5 min 異常分數值大於等於0的時間軸。

  • SPL語句

    * | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(status as double)), inflow_avg = min(cast (status as double)) by ts, request_method
      | where request_method is not null
      | make-series   latency_avg  default = 'last',
                    inflow_avg default = 'last'
                    on ts 
                    from 'min' to 'max'
                     step '1m' 
                    by request_method
     | extend test=series_decompose_anomalies(inflow_avg, '{"confidence":"0.005"}')
     | extend anomalies_score_series = test.anomalies_score_series
     | where array_max(slice(anomalies_score_series, -5, 5)) >= 0
  • 輸出結果

    image

演算法參數

參數

類型

樣本

描述

auto_period

varchar

"true"

只能設定 "true" 或 "false"。表示是否開啟時序周期自動檢測。如果設定為 "true",自訂的 period_num 和 period_unit 不生效。

period_num

varchar

"[1440]"

序列周期包含多少個時間點。可以輸入多個周期長度,目前服務只考慮長度最長的一個周期。

period_unit

varchar

"[\"min\"]"

序列周期的每個時間點的時間單位。可以輸入多個時間單位,時間單位的數量必須和設定的周期的數量相同。

period_config

varchar

"{\"cpu_util\": {\"auto_period\":\"true\", \"period_num\":\"720\", \"period_unit\":\"min\"}}"

如果需要針對不同的特徵設定不同的周期,可以配置 period_config 欄位,prediod_config 中的欄位名為要設定的特徵的名稱,欄位值為 object,在其中設定 auto_period,period_num,period_unit 三個欄位。

trend_sampling_step

varchar

"8"

時序分解時對於趨勢成分的下採樣率,需要可以轉換成正整數。採樣率越大,趨勢成分的擬合速度越快,趨勢成分的擬合精度會降低。預設為 "1"。

season_sampling_step

varchar

"1"

時序分解時對於周期成分的下採樣率,需要可以轉換成正整數。採樣率越大,周期成分的擬合速度越快,周期成分的擬合精度降低,預設為 "1"。

batch_size

varchar

"2880"

異常分析時使用滑動視窗的形式分段處理。batch_size 表示視窗的大小。視窗越小,分析的速度越快,準確度可能會降低。預設視窗的大小與序列的長度一致。

confidence

varchar

"0.005"

異常分析的敏感度,需要可以轉換成浮點數,取值範圍是(0,1.0)。數值越小,演算法對異常的敏感度越低,檢測到的異常數量減少。

confidence_trend

varchar

"0.005"

在分析趨勢項時,對於異常的敏感度。設定該參數後自動忽略 confidence。數值越小,演算法對於趨勢項的異常的敏感度越低,趨勢項檢測到的異常數量減少。

confidence_noise

varchar

"0.005"

在分析殘差項時,對於異常的敏感度。設定該參數後自動忽略 confidence。數值越小,演算法對於殘差項的異常的敏感度越低,殘差項檢測到的異常數量減少。

series_drilldown函數

用於時間序列分析的下鑽函數,允許在時間分組統計的基礎上,進一步對特定時間段內的資料進行細粒度分析。

文法

series_drilldown(array(varchar) label_0_array,array(varchar) label_1_array,array(varchar) label_2_array, ... ,array(array(bigint)) time_series_array,array(array(double)) metric_series_array,bigint begin_time,bigint end_time)

series_drilldown(array(varchar) label_0_array,array(varchar) label_1_array,array(varchar) label_2_array, ... ,array(array(bigint)) time_series_array,array(array(double)) metric_series_array,bigint begin_time,bigint end_time,varchar config)

參數說明

參數

說明

label_x_array

數組中每個元素為對應時間序列的label。函數重載最多支援 7 個 label array。

time_series_array

外層數組中每個元素為一個 time series。

metric_sereis_array

外層數組中每個元素為一個 metric series

begin_time

需要進行根因下探的開始時間點,一般設定為異常的開始時間,單位為納秒。

end_time

需要進行根因下探的結束時間點,一般設定為異常的結束時間,單位為納秒。

config

可選。演算法參數,json 格式。

傳回值

row(dirlldown_result varchar, error_msg varchar)

列名

類型

說明

dirlldown_result

varchar

下探的結果,JSON格式。

error_msg

varchar

錯誤資訊。為 null 則表示該行時間序列預測成功,否則展示失敗原因。

dirlldown_result參數說明

{
  "attrs": [
    {
      "api": "/ids/ml/annotationdataset",
      "resource": "test"
    },
    {
      "api": "/console/logs/getLogs"
    }
  ],
  "statistics": {
    "relative_ratio": 0.5003007763190033,
    "relative_ratio_predict": 1.0000575873881987,
    "unexpected_difference": -4.998402840764594,
    "relative_unexpected_difference": -0.499660063545782,
    "difference": -4.999183856137503,
    "predict": 5.005203022057271,
    "relative_ratio_real": 1.9987568734256989,
    "real": 10.004386878194774,
    "support": 50
  }
}
attrs參數說明

該參數用於標識該統計結果對應的維度篩選條件。數組中的各個條件為或的關係。

  • 樣本中表示api/ids/ml/annotationdataset或者/console/logs/getLogs

      "attrs": [
        {
          "api": "/ids/ml/annotationdataset",
          "resource": "test"
        },
        {
          "api": "/console/logs/getLogs"
        }
      ]
  • attrs中第一個元素表示api/ids/ml/annotationdataset並且resourcetest

        {
          "api": "/ids/ml/annotationdataset",
          "resource": "test"
        }
statistics參數說明

該參數提供時間序列的統計分析結果,用於根因分析或異常檢測。

指標名

類型

說明

support

int

在當前根因範圍內,統計樣本量(如資料點數量)。

real

float

在當前根因範圍內,指標的實際觀測值。

predict

float

在當前根因範圍內,指標的預測值。

difference

float

在當前根因範圍內,指標的實際值與預測值的絕對差。計算公式:predict - real。

unexpected_difference

float

在當前根因範圍內,指標的預測值和去除正常波動後的真實值(預期內的變化)的差值(非預期內的變化)。

relative_unexpected_difference

float

在當前根因範圍內,指標的非預期內的變化與預期內的變化的比值。

relative_ratio

float

在當前根因範圍內,指標的實際值與基準值的比例。計算公式:predict/real。

relative_ratio_predict

float

在當前根因範圍內,指標的預測值與根因範圍外的指標的預測值的比值。

relative_ratio_real

float

在當前根因範圍內,指標的真實值與根因範圍外的指標的真實值的比值。

樣本

  • SPL語句

    *
    | extend ts= (__time__- __time__%60)*1000000000
    | stats access_count = count(1) by ts, Method, ProjectName
    | extend access_count = cast( access_count as double)
    | make-series   access_count = access_count default = 'null'
                    on ts
                    from 'sls_begin_time' to 'sls_end_time'
                    step '1m'
                    by Method, ProjectName
    | stats m_arr = array_agg(Method), ProjectName = array_agg(ProjectName), ts_arr = array_agg(__ts__), metrics_arr = array_agg(access_count)
    | extend ret = series_drilldown(ARRAY['Method', 'Project'], m_arr, ProjectName, ts_arr, metrics_arr, 1739192700000000000, 1739193000000000000, '{"fill_na": "1", "gap_size": "3"}')
    | project ret
  • 輸出結果

    image

cluster函數

支援對多條時間序列(或向量資料)進行快速分組分析,識別相似形態的指標曲線、檢測異常模式或歸類資料模式。

文法

cluster(array(array(double)) array_vector, varchar cluster_mode,varchar params)

參數說明

參數

說明

array_vector

一個二維向量,在二維向量中要確保每行的向量長度一致。

cluster_mode

聚類的模型,目前Log Service提供兩種模式:

params

不同的聚類模型對應著不同的演算法參數說明。

聚類模型

kmeans
{
  "n_clusters": "5",
  "max_iter": "100",
  "tol": "0.0001",
  "init_mode": "kmeans++",
  "metric": "cosine/euclidean"
}

在調整KMeans演算法參數時的最佳化方法和建議,具體針對以下幾個關鍵參數進行了說明:

  1. n_clusters(聚類數量):當前值為5。建議通過肘部法則選擇合適的聚類數量,觀察總誤差平方和(SSE)的變化趨勢,並根據實際效果調整為3或7等其他值。

  2. max_iter(最大迭代次數):當前值為100。對於大規模資料集,可能需要增加迭代次數以確保收斂;若結果提前穩定,則可減少此值以節省計算資源,常用範圍為100至300。

  3. tol(收斂容忍度):該參數控制演算法的收斂條件,定義了簇中心變化幅度的閾值。高精度需求時可將值減小至0.00001,而對於大規模資料可適當放寬至0.001以提高效率,需權衡計算效率與精度。

  4. init_mode(初始模式):當前值為kmeans++,通常能提供較好的初始聚類中心。可根據需求嘗試random初始化,但可能需要更多迭代次數。若初始聚類中心對結果影響較大,可探索不同的初始化策略。

  5. metric(cosine/euclidean):

    • cosine(餘弦相似性):用於計算向量之間的夾角餘弦值,衡量方向上的相似性,適用於高維資料(如文本向量、映像特徵向量)和相似性匹配任務(如推薦系統)。當資料已歸一化為單位向量時,餘弦相似性等價於內積。

    • euclidean(歐幾裡得距離):用於計算兩點間的直線距離,衡量絕對距離差異,適用於低維空間的幾何問題(如座標點)和距離敏感任務(如K均值聚類、K近鄰分類/迴歸)。適用於需要保留資料絕對值差異的情境。

dbscan
{
  "epsilon": "0.1", // 注意:當 epsilon 的值 小於等於 0 時,演算法會自動的去推斷這個參數。
  "min_samples": "5"
}

SPL函數文本介紹了DBSCAN(Density-Based Spatial Clustering of Applications with Noise)演算法中的兩個關鍵參數epsilon (ε) 和 min_samples,它們用於定義簇的密度標準:

  • epsilon (ε):定義點的鄰域範圍,用於判斷點是否相鄰。較小的ε可能導致更多雜訊點,而較大的ε可能合并不相關的點。通常通過觀察k距離圖的肘部點來選擇合適的ε值。

  • min_samples:定義形成密集簇所需的最小點數。較高的值會使演算法更嚴格,減少簇數量並增加雜訊點;較低的值可能包括不密集的地區。一般根據資料維度選擇,如二維資料可選4或5。

這兩個參數共同決定簇的形成和雜訊點的識別。DBSCAN的優勢在於能識別任意形狀的簇且無需指定簇的數量,但其效能對參數選擇非常敏感,通常需要結合實驗和資料特性進行調整以獲得最佳聚類效果。

傳回值

row(
  n_clusters bigint, 
  cluster_sizes array(bigint), 
  assignments array(bigint),  
  error_msg varchar 
)

列名

類型

說明

n_clusters

bigint

返回的聚類結果的個數。

cluster_sizes

array(bigint)

每個聚類中心包含樣本的個數。

assignments

array(bigint)

輸入的每個樣本對應的cluster_id的編號。

error_msg

varchar

當調用失敗時,返回的錯誤資訊。

樣本

  • SPL語句

    * and __tag__:__job__: sql-calculate-metric
    | extend time = cast(time as bigint) - cast(time as bigint) % 300 
    | extend time = second_to_nano(time) 
    | stats avg_latency = avg(cast(sum_latency as double)) by time, Method 
    | make-series avg_latency = avg_latency default = '0' on time from 'sls_begin_time' to 'sls_end_time' step '5m' by Method 
    | stats method_array = array_agg(Method), ts_array = array_agg(__ts__), ds_array = array_agg(avg_latency)
    | extend ret = cluster(ds_array, 'kmeans', '{"n_clusters":"5"}')
    | extend n_clusters = ret.n_clusters, cluster_sizes = ret.cluster_sizes, assignments = ret.assignments, error_msg = ret.assignments
  • 輸出結果

    image

series_describe函數

一種用於時間序列分析的函數。該函數從多個維度對時間序列進行分析並返回結果,具體包括:資料是否連續、資料缺失情況、序列是否穩定、序列是否具有周期性及周期長度、以及序列是否存在顯著趨勢。

使用限制

已經通過make-series構造出 series 格式資料,時間單位必須精確到納秒

文法

series_describe(__ts__ array<bigint>, __ds__ array<double>)

series_describe(__ts__ array<bigint>, __ds__ array<double>,config varchar)

參數說明

參數

說明

__ts__

單調遞增加的時間序列,表示時間序列的每個資料點的Unix時間戳記(納秒級)。

__ds__

浮點數類型的數值序列,表示對應時間點的數值,長度和時間序列相同。

config

演算法參數(可選),演算法的預設參數如下,也可以自訂參數進行控制:

  • "with_period": "True"是否開啟檢測周期,True表示開啟。

  • "with_stable": "True"是否開啟穩定性檢測,True表示開啟。

  • "with_trend": "True"是否開啟序列的趨勢檢測,True表示開啟。

樣本:series_describe(__ts__, __ds__, '{"with_period": "True"}')

傳回值

row(statistic varchar, error_msg varchar)

列名

類型

說明

statistic

varchar

json序列化後的字串,用來儲存序列的統計資訊。

cluster_sizes

array(bigint)

每個聚類中心包含樣本的個數。

statistic樣本

返回的結果是一個JSON序列化的字串。

{
	"duplicate_count": 0, 
	"total_count": 1,
	"mean": 3.0,
	"variance": null,
	"min": 3.0,
	"max": 3.0,
	"median": 3.0,
	"interval": null,
	"missing_count": 0,
	"adf_test": null,
	"is_stable": false,
	"period": null,
	"trend": null
}

參數

說明

duplicate_count

重複值的數量。

total_count

總資料點數量。

mean

平均值。

variance

方差(此處為null,表示未計算或不適用)。

min

最小值。

max

最大值。

median

中位元。

interval

時間間隔(此處為null,表示未計算或不適用)。

missing_count

缺失值的數量。

adf_test

ADF檢驗結果(此處為null,表示未進行或不適用)。

is_stable

是否穩定(布爾值,表示資料是否具有穩定性)。

period

周期(此處為null,表示未檢測到或不適用)。

trend

趨勢(此處為null,表示未檢測到或不適用)。

樣本

  • SPL語句

    * and entity.file_name: "239_UCR_Anomaly_taichidbS0715Master.test.csv"
    | extend time = cast(__time__ as bigint) 
    | extend time = time - time % 60 
    | stats value = avg(cast(value as double)) by time 
    | extend time = second_to_nano(time)
    | make-series value = value default = 'nan' on time from 'min' to 'max' step '1m' 
    | extend ret = series_describe(value)
  • 輸出結果

    image

correlation函數

用於計算兩個對象之間的相似性。具體功能包括: 1. 如果兩個對象均為單個向量,返回兩序列的相似性。 2. 如果一個對象是向量組,另一個是單個向量,返迴向量組中每個向量與該單個向量的相似性。 3. 如果兩個對象均為向量組,返回兩組向量之間兩兩相似性的矩陣。

使用限制

入參已經通過make-series構造出 series 格式資料。

文法

  • 重載1

    correlation(arr_1 array(double), arr_2 array(double), params varchar)
  • 重載2

    correlation(arr_arr_1, array(array(double)), arr_2 array(double), params varchar)
  • 重載3

    correlation(arr_arr_1 array(array(double)), arr_arr_2  array(array(double)), params varchar)

參數說明

  • 重載1

    參數

    說明

    arr_1

    一條時間序列(通過make-series產生的單個單元)。

    arr_2

    一條時間序列(通過make-series產生的單個單元)。

    params

    演算法參數(可選),json 格式。

  • 重載2

    參數

    說明

    arr_arr_1

    一條時間序列(通過make-series產生的單個單元)處理後,使用array_agg函數返回一個二維數組。

    arr_2

    一條時間序列(通過make-series產生的單個單元)。

    params

    演算法參數(可選),json 格式。

  • 重載3

    參數

    說明

    arr_arr_1

    一條時間序列(通過make-series產生的單個單元)處理後,使用array_agg函數返回一個二維數組。

    arr_arr_2

    一條時間序列(通過make-series產生的單個單元)處理後,使用array_agg函數返回一個二維數組。

    params

    演算法參數(可選),json 格式。

演算法參數

參數名

參數解釋

參數類型

是否必填

measurement

相關性係數的計算方式,大部分情況下直接選用"Pearson"即可。

取值範圍:

  • Pearson -- 皮爾遜相關係數 (Pearson Correlation Coefficient): 衡量兩個連續變數間的線性關係。

  • SpearmanRank -- 斯皮爾曼等級相關係數(Spearman's Rank Correlation Coefficient): 衡量兩個有序變數間的單調關係(看趨勢是否一致)。

  • KendallTau -- 肯德爾等級相關係數 (Kendall's Tau Rank Correlation Coefficient): 衡量兩個有序變數間的單調關係,關注排序的一致性。

  • PointBiserial -- 點二系列相關係數(Point-Biserial Correlation Coefficient): 衡量一個二分類變數與一個連續變數間的關係。

varchar

max_shift

表示允許第一個變數(第一個參數對應的向量)向左移的時序點的最大數量。負值表示第一個變數可以“右移”。輸出的相關性係數是允許位移的情況下的最大相關性係數。

integer

否。預設值為0,表示不允許shift。

flag_shift_both_direction

取值範圍:

  • true:允許第一個變數向左或者向右移動|max_shift|個時序點。

  • false:只允許按max_shift符號指定的方向移動。

boolean

否,預設為"false"。

傳回值

  • 重載1

    row(result double)

    列名

    類型

    說明

    result

    double

    入參arr_1和arr_2的相關性係數。

  • 重載2

    row(result  array(double))

    列名

    類型

    說明

    result

    array(double)

    arr_arr_1裡面每一個向量和和arr_2的相關性係數的數組, 返回數組的長度是 arr_arr_1裡面向量的個數。

  • 重載3

    row(result  array(array(double)))

    列名

    類型

    說明

    result

    array(array(double))

    返回的是一個矩陣。如果資料不為空白,第i行j列是 arr_arr_1[i] 和arr_arr_2[j]的相關性係數。

樣本

樣本一

  • SPL語句

    * | where Method != 'GetProjectQuery'
      | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_inflow as double)) by ts, Method
      | make-series  latency_avg default = 'next',
                    inflow_avg default = 'next'
                    on ts
                    from 'sls_begin_time' to 'sls_end_time'
                    step '1m'
                    by Method
    
      | extend correlation_scores = correlation( latency_avg, inflow_avg )
  • 輸出結果

    image

樣本2

  • SPL語句

    * | where Method='GetProjectQuery'
      | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_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
      | extend scores = correlation( latency_avg, inflow_avg, '{"measurement": "SpearmanRank", "max_shift": 4}' )
  • 輸出結果

    image

樣本3

  • SPL語句

    * | where Method='GetProjectQuery'
      | extend ts = second_to_nano(__time__ - __time__ % 60)
      | stats latency_avg = max(cast(avg_latency as double)), inflow_avg = min(cast (sum_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
      | extend scores = correlation( latency_avg, inflow_avg, '{"measurement": "KendallTau", "max_shift": 5, "flag_shift_both_direction": true}')
  • 輸出結果

    image