で回答したので。
ある期間と、今日の値を時系列で比較したい場合のやり方
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が使い辛くなってきた。