maikeruのポケモン育成日記

maikeruのブログです。ポケモンをはじめとしたゲームの考察や感想、その他色んなことを書いていきます。

【Tableau】直近〇日間の数を集計する

Tableauでの期間単位での集計に関する話。

普通に期間単位の集計をすると、「日毎の」「週毎の」「月毎の」など、決まった期間単位の集計になってしまいます。
では日毎に「直近7日間」や「直近30日」といった集計をやりたい場合どうすればいいのか。単純合算できない場合(期間中のユニークな利用ユーザー数、など)は少し大変です。

ネット上に情報があったものの検索で見つけにくかったので、導線を増やす意味でもここに方法を記しておきます。

 

 

①単純合算可能な場合(売上など)

WINDOW_SUMという関数を使えば簡単にできます。

イメージとしては、一度日単位で集計した表を作り、それを使って計算する形になります。

 

②単純合算できない場合

これが本題。やり方のソースは公式ドキュメントであるこちらの、オプション2の方法で出すことができました。

個別の実行中または移動中のカウントの計算 | Tableau Software

...「これでできます」で終わってもいいのですが、少しだけコメントしてみます。

こちらも基本は同じで、WINDOW_SUMを使って過去いくらかの数値を合計しています。
ドキュメントの例は「直近3週間」ですが、例えば「直近7日感」だとこんな計算フィールドになります。

直近7日間中の利用判定

WINDOW_MAX(MAX(1), -6, 0)

WINDOW_MAXを使うことで、特定の範囲内で複数回IDが登場しても1を返すようになっています。
MAXじゃなくてMINでも何でも、あれば1つと数えるものなら何でもよいです(逆にSUMなどは複数あった場合複数数えてしまうためだめ)。

直近7日間のアクティブなユーザー数は、ドキュメント同様WINDOW_SUMで計算できます。

7日間中のアクティブなユーザー数

WINDOW_SUM(7日間中の利用判定)

 

ポイントはステップ3の「表計算の編集」

「ネストされた計算」を使い、計算に使用するディメンションを利用判定・ユーザー数の計算それぞれに指定するイメージです。

利用判定については、「日」のディメンションでWINDOW関数を使う、

実際の利用回数を数えるときにはcustomer_idを数える、

という2段構えのイメージです。

 

なお、出力期間の粒度を細かくすると(日毎に直近30日を計算、など)その分重くなるので、最初はフィルタをしたり、月単位や週単位など粗目の粒度でテストすると良いでしょう。

プライバシーポリシー