Tableauでデシル分析を作成してみた #tableau

2017.11.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

デシル分析とは

最低限の定義だけ説明すると、「あるデータを10個のグループに分けて分析する」という分析手法になります。 といっても、これだけだと、何のためにやる分析なのか謎なので、よく使用される場面をご紹介します。

顧客毎の購買金額をデシりがち

デシル分析のよくある使い方の一つとして、以下のような手法がよく用いられます。

  1. 顧客毎の総購買金額を出す
  2. 総購買金額の高い順に顧客を並べ替える(順位付けをする)
  3. 総購買金額の高い順から、顧客を10つのグループに分けていく。(デシる)
  4. どのグループが一番売上に貢献しているか(売上比率が高いか)を分析する。 ※大体は一番上位のグループが、売上のほとんどを占めているという結果になりがちです。(=パレートの法則)

本エントリも、上記の「顧客毎の購買金額」でデシってみたいと思います。

手順について

ポイント

「Tableau上で、どうやって『10等分』を表現するか」が、重要な部分となるでしょう。 (PostgreSQLだと、ntileという関数で比較的簡単に10等分できますが、Tableauではどうなのか??)

作業環境

  • MacOS High Sierra 10.13.1
  • Tableau 10.4.1

使用データ

  • Tableau付属のサンプルスーパーストア

手順

顧客毎の総購買金額を計算する

これは、LOD関数の「FIXED」で求めることができます。 LOD関数の詳細な説明はここでは省きますが、ひとまず、特定のフィールドで固定した中で各種集計ができる、という程度にお考えください。

左上の下向き三角マークを選択し、「計算フィールドの作成」を選択します。

「売上」を、「顧客毎」に合計したいため、以下の式を作成します。 { FIXED [顧客名] : SUM([売上])}

※この場合、本来はユニークとなるキーを指定するべきなのですが、今回は顧客IDなるものが無いため、顧客名を使用しています。

顧客毎の総購買金額を、10等分する。(10個のグループに分ける)

さて、今回のポイントとなります。 残念ながら、Tableauには、本エントリの最初の方に書いた「ntile」のような関数は、2017年11月現在存在しておりません。 その代わり、同系統のカテゴリに属する関数を使って、任意のデータを10等分するテクニックが、Tableauのナレッジベースに掲載されていたので、それを使用しましょう。 Creating a Decile of Measure Dimension | Tableau Software

Tableauには、「PERCENTILE」という関数があります。

この関数をざっくり説明すると「このデータを下から数えて、○○%の位置のデータを取得しろ」というものです。 例えば、{PERCENTILE([売上], .1)} と書いた場合、「売上」の10%部分に位置する値を取得します。

この関数を使用すれば、○○%に当たる位置を取得することができます。その位置をしきい値として扱い、顧客毎の購買金額を10個のグループに振り分けましょう。

以下の計算式を作成します。

IF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .1) } THEN "デシル10"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .2) } THEN "デシル9"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .3) } THEN "デシル8"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .4) } THEN "デシル7"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .5) } THEN "デシル6"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .6) } THEN "デシル5"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .7) } THEN "デシル4"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .8) } THEN "デシル3"
ELSEIF[顧客毎の購買金額] <= {PERCENTILE([顧客毎の購買金額], .9) } THEN "デシル2"
ELSE "デシル1"
END

顧客毎の購買金額における、○○%部分の位置を取得し、それより大きいか小さいかをIF文で判断し、グループに振り分けています。

ビジュアライゼーションする

後は、作成した計算フィールド項目を行列に配置していくのみです。

「デシル」と「顧客毎の購買金額」を配置します。

これで、デシル分析の基本形となるVizが完成しました。

これができれば、後は煮るなり焼くなり…という感じですね。 ラベルを付与したり、二重軸で累計積み上げの折れ線グラフを足してパレート図にしてもいいですね。

おわりに

今回は、意外(?)と必要とされがちのデシル分析について見てきました。 ここから、高額購買者と低額購買者の購買物の差をみたり等、色々と考えることができると思います。逆に、デシル分析”だけ”を見ても、劇的な効果を発揮するわけではないので、他の分析と組み合わせて使用してみてください。

もうすぐ単身赴任が終わり、自宅のある奈良に帰ろうとしています。 奈良オフィスできないかなあ…(奈良で働きたい人がいたら、実現する可能性が!?)(果たしているのか??)