で回答したので。
ある期間と、今日の値を時系列で比較したい場合のやり方
timechart.spl
| tstats count where index=_internal earliest=1 by _time span=30min
| eval status="OverTime"
| append [|tstats count where index=_internal earliest=-1d@d by _time span=30min | eval status="Today"]
| eval _time=strftime(_time,"%T")
| stats avg(count) as count by _time status
| xyseries _time status count
| fillnull OverTime Today
結果
_time | OverTime | Today |
---|---|---|
00:00:00 | 3147.4166666666665 | 0 |
00:30:00 | 2295.235294117647 | 0 |
01:00:00 | 2218.2 | 290.5 |
01:30:00 | 3621 | 818 |
02:00:00 | 6259.8 | 6103 |
02:30:00 | 4775.7 | 8777 |
03:00:00 | 3919.470588235294 | 145 |
03:30:00 | 4572 | 218 |
04:00:00 | 6751.25 | 4705 |
解説
-
tstats
は検索期間を複数設定できないのでappend
でくっつけています。 - その際
eval
で区分を作成 - 結合するために、時間だけのデータにしています。
- 二番目の引数のフィールドの値が列名となる
xyseries
を使ってみました。 -
xyseries
だと値がないところを補完してくれないのでfillnull
を使いました。
まとめ
列1 | 列2 | 列3 |
---|---|---|
時間 | あとで値を列名にしたいフィールド | 集計値 |
という形を作るとxyseries
がいい感じで使えます。
bin
してstats count by _time field
をappend
でくっつけるとこの形が作れますね。
Splunk>Answersの質問者はappendcols
を使ってますけど、単純に横に列をくっつけるだけなので、だったらjoin
のほうがいいですよね。
このごろはxyseries
をよく使っているような気がしています。
Splunkのtableの縦横を変換する
の頃はあんまり使ってなかったのに、慣れでしょうかね。
逆にtimechart
が使い辛くなってきた。