【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シリーズ