粒度の違うデータ分析は縦につなげという話

今回はデータ分析初級から中級の方向けの話です。
粒度の違うデータを分析する場合、データの持ち方に悩むことが多いですよね。

##例えばカスタマージャーニー
自分はCRMデータを扱うことが多いので、マーケティングからサービスまで包括的な分析を行うことがよくあります。

例えば**顧客になる前の「興味がある」段階から契約後、リピート顧客になるまでの一連の流れ**を簡単に記載すると下記のようになります。

- マーケティング(集客→見込み顧客化）
- インサイドセールス（見込み顧客→案件化）
- セールス（案件→受注化）
- サービス（既存顧客→継続化）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260655/e10b4fe3-337d-22b5-ea17-b35aa5b581f0.png)


顧客生涯利益の最大化のために、４つの視点から最適化し、全体的な効果を最大化して行く必要があります。
そのためには分析用のBIツールが必須です。

##データの粒度
この時に問題になるのが粒度です。

###データの粒度とは
データの粒度とはデータの細かさの単位です。
一行でどの単位でデータを保持しているのかという細かさになります。
セールス関連のデータで見てみると、**営業が活動するのは取引先の顧客個人**になりますが、**実際に売上が上がるのは会社単位**です。

この場合は、活動データは「取引先→個人」になりますが、売上データは「取引先」になるので、活動データの方が粒度が細かいです。

##データ分析と粒度

データにより粒度が異なるということは理解いただけたかと思いますが、実際に分析する際には粒度の相違が色々邪魔をします。

例えばこのようなデータがあります。

####活動データ

|取引先名|顧客名|活動種別|日時|内容|担当者|
|:-:|:-:|:-:|:-:|:-:|:-:|
|A社|X部長|電話|2021-04-05|製品提案|営業D|
|B社|Z専務|訪問|2021-04-08|ソリューション紹介|営業F|
|A社|Y部長|メール|2021-04-10|資料送付|内勤G|

####実績データ

|取引先名|日時|金額|商談名|担当者|
|:-:|:-:|:-:|:-:|:-:|
|A社|2021-04-21|10000|CRMアドオン|営業D|
|B社|2021-05-17|30000|MA新規契約|営業F|
|B社|2021-05-25|3000|CRMライセンス追加|営業F|
|A社|2021-05-28|2300|CRMライセンス追加|営業D|

見ての通り、活動データは取引先と顧客名の粒度で保持していますが、
実績データは取引先名の粒度で発生します。

##データ結合

この２つのデータを複合して、ちゃんとターゲット顧客に活動した結果、実績が上がっているのか？
を確認したいと思うのですが、**データを結合する際にはキーが必要です。**

活動と実績であれば、取引先名と日時（月）がキーになりそうなの、それぞれサマリーしたデータを結合できそうですね。

####結合後のデータ

|取引先名|年月|実績金額|活動回数|
|:-:|:-:|:-:|:-:|
|A社|2021-04|10000|2|
|A社|2021-05|2300||
|B社|2021-04||1|
|B社|2021-05|33000||

これで活動と実績の相関がわかります。**よかったですね！**
となりそうですが、実際にこのデータで分析するには課題があります。

###分析時の課題
A社の5月やB社の5月のように、活動か実績、どちらかしか存在しないデータがある場合
実績のサマリーデータと活動のサマリーデータを完全外部結合でJoinする必要があります。

結合方法に関しては[こちら](https://help.tableau.com/current/pro/desktop/ja-jp/joining_tables.htm)をご覧ください。

結合の際に**活動と実績、それぞれサマリーしてしまっているので、粒度が落ちています。
どんな活動だったのか？、どんな実績だったのか？という情報が抜けて、合計値のみが残っています。**

そのため、例えばある特定の活動の実績への貢献度や、活動全体に対する新規ビジネスの創出などを把握するためには都度、必要なサマリーデータを作成する必要が出てきます。

Excelでデータ分析をしている人にとっては日常的な作業かもしれませんが、仮説検証を高速化するため、もっと効率的なデータ構造を持つ必要があります。

##データを縦につなぐ

このような問題を解決するための一つの手法がデータを「縦につなぐ」ことです。
このデータをBIツールでサマリーしてみることで情報を失わずに分析することが可能になります。

|取引先名|顧客名|活動種別|日時|活動内容|担当者|実績金額|案件名|データソース|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|A社|X部長|電話|2021-04-05|製品提案|営業D|||活動|
|B社|Z専務|訪問|2021-04-08|ソリューション紹介|営業F|||活動|
|A社|Y部長|メール|2021-04-10|資料送付|内勤G|||活動|
|A社|||2021-04-21||営業D|10000|CRMアドオン|実績|
|B社|||2021-05-17||営業F|30000|MA新規契約|実績|
|B社|||2021-05-25||営業F|3000|CRMライセンス追加|実績|
|A社|||2021-05-28||営業D|2300|CRMライセンス追加|実績|

上記のように取引先名と日時、担当者など共通項目として使用するカラムは連結し、それぞれのテーブルに独自で存在する項目は独自に追加します。
「データソース」カラムはあってもなくても良いですが、可読性を高めるためも付与をおすすめします。

データベースが得意な方は、キーの異なるテーブルを縦に連結するのを「気持ち悪い」と思われるかもしれません。
一般的にユニオン結合という、同じフォーマットのデータを連結するのに使われる結合で、一部のキーだけは共通ですが冗長な構成となりますので。。。
ただ、**データ分析という視点からみると非常に理にかなったデータ形式なんです。**

####集計の容易性

このデータ形式にしておけば、BIツールにより集計処理して最初に求めたかった実績金額と活動回数のサマリーを得ることが簡単にできます。

|取引先名|年月|実績金額|活動回数|
|:-:|:-:|:-:|:-:|
|A社|2021-04|10000|2|
|A社|2021-05|2300||
|B社|2021-04||1|
|B社|2021-05|33000||

####フィルターの共通化

さらに、「誰が」「どのような」活動を行ったのか？「新規」なのか「追加」なのか？
というような仮説検証に対してもデータのフィルター処理を行うだけで集計することができます。

結果としてサマリーテーブルを何度も作り直す必要がなくなり、集計値からのドリルダウンによる詳細確認が高速化できます。

##まとめ
今回は粒度の異なるデータを分析するためには縦につなぐ方法をご紹介しました。

**集計値を求めるのと分析するのは、似て非なる手法が必要です。**
データを分析したい人に対しては異なる粒度を保持しつつ、縦横無尽に分析できる縦結合は向いていますし、集計値が欲しいユーザーに対しては、細かい分析はできないけれども合計値が見える集計テーブルを提供してあげれば良いと思います。

昨今、BIツールも一般化しつつあります。Excelデータ分析とは違う分析手法をこれからもお伝えしていきたいと思います。