
今回は「顧客ごとの初回購入日を取得する」計算フィールドの作り方について解説したいと思う。
顧客ごとの初回購入日を算出する計算フィールドは下記のようなコホート分析を行う時によく活用される。
「顧客が初回購入してから2回目に購入するまでの経過日数を確認したい!」
色々と応用が利く方法なので覚えておくと便利だ。
顧客ごとの初回購入日を算出する方法
顧客ごとの初回購入日を算出する計算フィールドは比較的簡単に作成できるが、LOD表現の理解が必要だ。
今回は下記のサンプルスーパーストアのデータを使用して顧客ごとの初回購入日を取得したいと思う。
Step1:どのデータを使用して計算フィールドを作成するかを整理する
まず顧客ごとの初回購入日を取得するには、上記のデータでどのカラム(列の名前→オーダー日や顧客名などのこと)を使用すれば実現できるかを検討する。
どのカラムを使用すべきかを検討する際に下記のように要素を分解してみると整理しやすい。
- 初回購入日を顧客ごとに分ける必要があるから、「顧客id」を使用する
- 購入日はサンプルスーパーストアではオーダー日に該当するから、「オーダー日」を使用する
- 初回購入日は「オーダー日」の中で最小の日付(例えば、オーダー日が12月1日、12月2日の2つあったら、12月1日を取得するということ)を取得すればいいから、最小値を取得するMIN関数を使用する
これでどのデータを使用すればいいかを整理できたので、実際に計算フィールドを使用して顧客ごとの初回購入日を取得していく。
Step2:計算フィールドの作成
実際に計算フィールドで作成する際の計算式は下記のようになる。
この計算式の意味としては下記だ。
詳しくは他の記事でご紹介する予定だが、LOD表現のFIXED関数は下記特徴がある。
「どのディメンションでデータをまとめるかを指定し、そのディメンションでデータの粒度を固定する」
今回は顧客idごとにオーダー日をまとめたいから、FIXED [顧客id] と指定しているのだ。
実際に作成した「顧客ごとの初回購入日」を表示してみると下記のようになる。顧客idごとのオーダー日をそのまま表示したものと比べると違いが分かりやすいと思う。
上図左側では通常の「オーダー日」フィールドを行シェルフに入れているので、各顧客Idごとのオーダー日がすべて表示されている(その顧客がそれぞれの日に購入しているという意味だ)。
一方で、上図右側では顧客ごとの初回購入日の計算フィールドを行シェルフに追加したので、各顧客Idのオーダー日の中で最も早い日付のみが表示されている。
これが顧客ごとの初回購入日の計算方法だ。


まとめ
今回は顧客ごとの初回購入日の計算方法についてご紹介した。
FIXED関数を使用して計算フィールドを作成し、他の計算にそのフィールドを使用するってことが、実務でよくあるので、LOD表現の理解も併せて覚えておいてもらえるといいと思う。
日付を操作したり、調整する関数も併せて覚えておくと実務での応用が利くので下記記事も是非参考にしてほしい。
他のTableauに関するよくある質問は下記でまとめているので少しでも参考になれば幸いだ。