2020年5月13日水曜日

日本企業固有の「月度」で集計したい

ことのはじまり

日本企業では月末締めじゃなくて、途中に締める習慣がある企業があります。思い起こせば、前職でも「20日締め」という仕組みで給料が支払われていました。Splunkでこの月度の考えを入れるときはいつも頭を悩まします。



そんなに悩むことはないかもしれない

timechart コマンドで集計するときに月の始まりと月の終わりを指定できたらいいのですが、そんなOptionはありません。ただし、そもそもそんなに複雑に考えなくとも 月度に収まるように_timeをいじってしまえばいいのだと思います。

以下のようなSPL差し込んで、締め日の前のデータは先月に放り込んでしまえばいいでしょう。20日締めだとしたら、20日以内のデータは20日前にずらしてしまうという考えです。あくまで、span=1mon で時系列を崩しても問題ない集計する前提です。

 | eval date_day=strftime(_time,"%d")
 | eval _time=if(date_day<=20,_time-(86400*20),_time)
 | timechart span=1mon count

date_mday 使っても良いと思いますが、date_mday は抽出されないときがあるので汎用的なevalを入れました。