前回に引き続き、Splunkのグラフとコマンド(Splunk式)のサンプルです。
今回は知ってたら少し得をする応用的なグラフを紹介したいと思います。
今回使用のデータは厚生労働省の「各都道府県の検査陽性者の状況(空港検疫、チャーター便案件を除く国内事例)」の集約結果です。
http://www.mathkuro.com/visualize/splunk/covid-19-japan-data/
また、コマンドはあくまでサンプルです。
「トレリスレイアウトでは必ずtimechartが必要」等の意味ではないのでご注意をば。
トレリスレイアウト(Trellis Layout)
トレリスは、植物などを這わせる格子状の棚(藤棚とか)を指す言葉で、それが転じてトレリスレイアウトは物を格子状に配置する、と言う意味を表します。
Splunkではトレリスレイアウトを設定するとグラフを分割して配置できます。
Splunkコマンド
index="covid-19-japan-by-prefecture" | timechart span=1d limit=3 max(PCR_positive) as 陽性者数 by prefecture_name
トレリスレイアウト設定前
トレリスレイアウト設定後
トレリスレイアウトを設定すると、都道府県毎にグラフが分割されていることがわかります。
トレリスレイアウトは[視覚エフェクト]
->[トレリス]
をクリックし、”トレリス レイアウトを使用“にチェックを入れると使用できます。
分割基準にはByに指定した値またはフィールドを指定できます。
(今回はByで分割していますが、例えば陽性者数の他に検査数をtimechartに含めていたら、陽性者数・検査数という分割が可能です)
また、縦軸のスケールは共有・独立から選択可能です。
それぞれの推移をみたい場合は独立、絶対値を比較したい場合は共有など、使い分けができます。
By句について
トレリスレイアウトでBy句がでてきたのでByのSplunkコマンドの例をいくつか書いておきます。
フィールドでグループ化
index="covid-19-japan-by-prefecture" | timechart span=1d limit=3 max(PCR_positive) as 陽性者数 by prefecture_name
普通にByする時は、分割に使用したいフィールドを指定するだけでOKです。
この例だと、prefecture_name毎に集計されます。
日付・時間でグループ化
例えば曜日毎に分割したい場合は以下のようにSplunkコマンドを記載します。
index="covid-19-japan-by-prefecture" | timechart span=1d max(PCR_positive) as 陽性者数 by date_wday
friday, monday, saturday, sunday, thursday, tuesday, wednesdayと、曜日毎に分割されていることがわかります。
※デフォルトだと、↑のように表示順がただのアルファベット順なので、必要に応じて並び替えましょう。
上記は曜日毎の例ですが、他にも以下を指定することができます。
date_second | 秒単位 |
date_minute | 分単位 |
date_hour | 時間単位。 営業時間や深夜帯などで分けて可視化したい場合に便利。 |
date_mday | 日単位。 |
date_wday | 曜日単位。 平日・休日の比較等で使えるので一番よく使う。 |
date_month | 月単位。 |
date_year | 年単位。 |
週単位でグループ化
上の表を見てお気づきになった方もいるかと思いますが、週単位で分割する方法が用意されていないんです。
でも、発売後の第1週と第2週で売り上げがどう変わったか、とか見たくなるのが人情ってものじゃないですか。
そんな時は以下のSplunkコマンドを試してみましょう。
index="covid-19-japan-by-prefecture" | eval bucket_time=_time | bucket bucket_time span=1w | convert timeformat="%m/%d" ctime(bucket_time) as date | stats max(PCR_positive) by date
1週間単位でバケツを作り、その日付部分で分割するようにしています。
グラフは以下の感じになります。
1週間単位のバケツはタイムピッカーで指定する日付範囲に依存するので、例えば日曜始まりで分割したい等があれば、開始・終了時刻を変更することで変えることができます。
もちろん、バケツの幅は1週間でなくても良いので、「X時間単位で分けたい」とか「2営業日単位で分けたい」といった場合にも応用が効きます。
応用編は以上です。
分かりづらい箇所や間違っている箇所があればコメントください。
コメント