本文主要介紹彙總指令的用法和樣本。
stats
用於統計分析日誌的指令,類似 SQL 中的彙總函式(如 COUNT, SUM, AVG 等)。對日誌資料中的特定欄位進行統計、分組和彙總操作。
該指令專用於LogStore的查詢分析,不適用於新版資料加工、SPL規則消費、寫入處理器和Logtail配置等情境。
預設情況stats返回前100條彙總結果,如果需要返回更多可以結合limit指令使用
文法
stats <output>=<aggOperator> by <group>,[<group>...]參數說明
參數 | 類型 | 必填 | 說明 |
output | String | 是 | 為統計結果欄位指定別名。 |
aggOperator | SQLExp | 是 | 支援以下彙總函式:
|
group | String | 否 | 指定彙總的維度,類似sql中group by的欄位。 |
樣本
樣本1:對於accesslog按
ip統計pv。SPL語句
* | stats pv=count(*) by ip輸入資料
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10輸出資料
ip: 192.168.1.2 pv: 1 ip: 192.168.1.1 pv: 2
樣本2:對於
accesslog統計所有ip的延遲min/max。SPL語句
* | extend latencyMs=cast(latencyMs as bigint) | stats minLatencyMs=min(latencyMs), maxLatencyMs=max(latencyMs) by ip輸入資料
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10輸出資料
ip: 192.168.1.2 minLatencyMs: 10 maxLatencyMs: 20 ip: 192.168.1.1 minLatencyMs: 10 maxLatencyMs: 10
樣本3:對於accesslog統計所有
pv。SPL語句
* | stats pv=count(*)輸入資料
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10輸出資料
pv: 3
sort
對查詢結果進行排序,支援對欄位值或統計結果進行升序(asc)或降序(desc)排序。它是日誌分析中快速定位關鍵資料、產生有序報表的重要工具。
該指令專用於LogStore的查詢分析,不適用於新版資料加工、SPL規則消費、寫入處理器和Logtail配置等情境。
文法
sort <field> [asc/desc] ,(<field> [asc/desc])參數說明
參數 | 類型 | 必填 | 說明 |
field | String | 是 | 指定排序的欄位。支援以下類型欄位:
|
asc/desc | String | 否 |
|
樣本
對於accesslog按latencyMs排序。
SPL語句
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs desc輸入資料
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15輸出資料
ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15 ip: 192.168.1.1 latencyMs: 10
limit
用於限制查詢結果返回的日誌行數,是控制資料量的核心指令之一。通過 limit 可有效防止查詢結果過大導致的效能問題或資源浪費,適用於日誌分析、即時監控等多種情境。
該指令專用於LogStore的查詢分析,不適用於新版資料加工、SPL規則消費、寫入處理器和Logtail配置等情境。
若不配合sort指令明確定序,limit指令的輸出結果的 順序是隨機的(因日誌儲存時未保證自然順序)。
文法
limit (<offset>,) <size>參數說明
參數 | 類型 | 必填 | 說明 |
offset | Interger | 否 | 跳過前 |
size | Interger | 是 | 行數限制。 |
樣本
對於accesslog按latencyMs排序後取第一條。
SPL語句
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs | limit 1輸入資料
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15輸出資料
ip: 192.168.1.1 latencyMs: 20