本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
そのデータセットはどの項目でデータを一意に特定できるのか?
データの粒度という言葉を分析の現場ではよく使用しますが、きちんと理解しているでしょうか?
データの粒度とは、テーブルや表などのデータセットにおいて、データの細かさを表す指標です。例えば、『会員マスタは、会員IDひとつにつき、データが1件格納されている」、「売上テーブルは、店舗IDと決済キーの組み合わせひとつにつき、データが1件格納されている」といったように、どの項目でデータを一意に特定できるかを表す指標です。なお、お気づきの方もいらっしゃるかもしれませんが、これはデータベースにおけるプライマリキー(PK)に相当します。ですので、「このテーブルの粒度は?」と聞かれた場合は、テーブルのプライマリキーを答えてあげましょう。
ただし、プライマリキーが定義されていないテーブルも多々あるでしょう。そのような場合は、そのテーブルがどのような使われ方をされているかを調査する必要があります。具体的には、どのようなユースケースの際にレコードが挿入されるのかをプログラムなどで確認したり、テーブルについて詳しい方にヒアリングする作業が必要になります。
分析前にはデータの粒度を確認すること
データの粒度を把握せずに分析すると、下記のケースのように誤った集計値が算出されるため、分析前に必ず確認するようにしましょう。
ケース① JOINによるデータ重複
Aさんは、ユーザ別の売上額を郵便番号という軸で分析したいと考え、ユーザ別売上額テーブルにユーザ別郵便番号テーブルをLEFT OUTER JOINしたデータを取得しました。このとき、Aさんは、ユーザ別売上額テーブルには、ユーザIDごとに1件の集計された売上額が格納されており、ユーザ別郵便番号テーブルには、ユーザIDごとに1件の郵便番号が格納されていると想定していました。しかし、ユーザ別郵便番号テーブルを確認してみたところ、過去の郵便番号まで含んでおり、ユーザIDごとに1件の郵便番号になっていないことが発覚しました。
このようなケースの場合、まずユーザ別郵便番号テーブルから、各ユーザの最新の郵便番号のみを保持したデータを抽出し、そのデータとLEFT OUTER JOINしなければ、データの重複が発生してしまいます。
ケース② テーブル分散によるデータ欠落
Bさんは、売上テーブルを店舗ごとに集計し、売上額を算出しようと考えていました。このとき、Bさんは、売上テーブルには、店舗IDと決済キーの組み合わせごとに、1件のデータが格納されると想定していました。しかし、詳しく調査してみると、店舗の地域ごとにテーブルが分割されており、地域ごとにテーブルが存在していることが発覚しました。
このようなケースの場合、すべての売上テーブルをUNIONした後に集計しなければ、データの欠落が発生してしまいます。
データ分析用語:索引