LoginSignup
1
2

More than 3 years have passed since last update.

Splunkで先月比のグラフをつくる

Last updated at Posted at 2019-06-15

Excelだと簡単にできるけど、Splunkでやるにはちょっと頑張らなきゃいけなかった。
chartを使えば簡単にできました。(半年後の感想)

データの準備

SPL
| gentimes start=05/01/2019 end=07/01/2019
| rename starttime as _time
| eval count=(random() % 1000 ) +1
| eval date_month=strftime(_time, "%m")
| eval date_mday=strftime(_time, "%d")
| fields _time,count,date_month,date_mday

gentimesでずらっと日付を二ヶ月分作成して、適当なデータをrandom()で作成

strftimeで月と日にちを作成。これはあとで集計する際の指標とする。

fieldsで必要なデータのフィールドのみとする。

集計と表示向け加工

SPL
| chart sum(count) as count by date_mday date_month
| rename date_mday as _date_mday
| foreach * 
    [ eval time="<<MATCHSTR>>"."-"._date_mday]
    | eval _time=strptime(time,"%m-%d")
    | fields - time
    | table _time *

chart@splunk>docsの記述をみると

chart [<chart-options>] [agg=<stats-agg-term>]
( <stats-agg-term> | <sparkline-agg-term> | "("<eval-expression>")" )...
[ BY <row-split> <column-split> ] | [ OVER <row-split> ] [BY <column-split>] ]
[<dedup_splitvals>]

BYのところに注目
<row-split> <column-split>なので、最初が行を分割、次が列を分割
今回はdate_mday(日付)で行を分割、date_month(月)で列を分割した。

date_mdayは文字列(String)なので、月を付けてあげてstrptimeで時間にもどしてあげる。
ここはいつ作ってもいいように自動判定にしている。

月の表示はforeachでの判定もあり%m(2桁数字)にしたけど、最終的にrenameを使用して日本語に変えてもらえばいいと思う。

結果

qiiita1.jpg
qiita2.jpg

ここは修正していないけど、概ねこんな感じで出ます。

:sweat: 職場のグラフ直さないといけない・・・・

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2