【Splunk】statsは統計処理を行う

statsコマンドの説明を書きます。
以下の記事の派生記事です。
canada-lemon.hatenablog.com

statsは統計処理を行うコマンドです。

構文例
| stats (統計処理) by <集計単位のフィールド名>

使用例1:平均を計算する

statsを使って数値の平均を計算してみます。

以下のSPLを実行してダミーデータを用意します。
4人の生徒の英数国の点数です。
makeresultsってなんぞや?という方は以下の記事をご参照ください。
canada-lemon.hatenablog.com

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
Class Name English Math Japanese
2年1組 Alfred 90 60 70
2年1組 Gascoigne 80 80 80
2年2組 Gehrman 60 100 50
2年2組 Ludwig 70 70 90



| stats avg(フィールド名)で、そのフィールドの平均を計算できます。
試しにEnglishの平均を計算してみましょう。

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
| stats avg(English) 
| rename avg(English) as "英語の平均点"
英語の平均点
75



by <フィールド名>を追加することで、そのフィールド単位で集計できます。
次は、クラスごとの英語の平均点を計算してみます。

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
| stats avg(English) by Class
| rename avg(English) as "英語の平均点"
Class 英語の平均点
2年1組 85
2年2組 65



複数のフィールドに統計処理を行うことも可能です。
英語・数学・国語の平均点をそれぞれ計算します。

| makeresults format=csv 
data="Class,Name,English,Math,Japanese
2年1組,Alfred,90,60,70
2年1組,Gascoigne,80,80,80
2年2組,Gehrman,60,100,50
2年2組,Ludwig,70,70,90"
| table Class Name English Math Japanese
| stats avg(English) avg(Math) avg(Japanese) by Class
| rename avg(English) as "英語の平均点" avg(Math) as "数学の平均点" avg(Japanese) as "国語の平均点"
Class 英語の平均点 数学の平均点 国語の平均点
2年1組 85 70 75
2年2組 65 85 70



ここでは平均を計算しましたが、他にも様々な統計処理が可能です。
次の項目で一例を紹介します。

備考1:よく使う統計処理

  • count:ログの件数
  • sum:合計
  • avg:平均
  • values:ユニークな値の一覧
  • list:重複を含む値の一覧

備考2:renameもできる

以下のように書くと、統計処理とリネーム処理を1行で記載できます。

| stats avg(English) as "英語の平均点" by Class

なお、フィールド名を日本語にすると加工が面倒になるのでご注意ください。
参考までにこちらの記事を添付します。
canada-lemon.hatenablog.com

本記事ではstatsコマンドの説明をしました。
このコマンドもevalと並んで用途が広く、statsとevalを使えるようになったらだいたいのユースケースに対応できると言っても過言ではないです。

ここまで読んでいただき、ありがとうございました。

Splunk頻出SPLシリーズ