データサイエンス

Tableau Desktopでプライマリキーを確認する方法

こんにちは!
分析官のMです。

先日公開した記事では、
データ受領時のプライマリキー(PK)確認の重要性についてまとめさせていただきました。
分析官3年目の私がデータ受領時にプライマリキー確認にこだわる理由

私自身、データからPKを確認する際、PythonやRを使うこともありますが、
基本的にはTableauを使うことが多いです。

Tableauを用いるメリットとしては、
・最低限の計算式記述のみでPK確認が可能
・重複があった場合、そのレコードの特定や閲覧がしやすい
・PK確認と同時に各カラムの分布等も同一ダッシュボードで確認できる
などがあります。

本記事ではTableauの公式サイトからダウンロードできるサンプルデータを用いて、Tableau上でのPK確認方法をご共有します。
https://public.tableau.com/ja-jp/s/resources

1つのカラムでデータのレコードが一意に定まると想定できる場合

まずはタイタニックの乗客リスト(titanic passenger list.csv)のPKを確認していきます。
カラムの1つに”name”というカラムがあり、そこには乗客者氏名が入っているようなので、PKは”name”であると想定できます。
PKが”name”であるかどうかを確認するために、Tableau上で”nameのユニークカウント”と”データのレコード数”が一致しているかどうかを検証していきます。

検証の流れは以下の通りです。
1. “name”をユニークカウントする計算式を作成
※ここでは”ユニーク乗客数”という名前にしています。
f:id:gri-blog:20201216094203p:plain
2. “メジャーネーム”をフィルター欄上にドラッグ&ドロップ
3. “titanic passenger list.csv のカウント”と”ユニーク乗客数”にチェックを入れて”OK”をクリック
f:id:gri-blog:20201216094322p:plain
4. ワークシート上部の行欄に”メジャーネーム”、マーク欄の”テキスト”の上で”メジャーバリュー”をドラッグ&ドロップ

集計結果は以下の通りです。
f:id:gri-blog:20201216095343p:plain
“titanic passenger list.csv のカウント(データのレコード数)”が1309であるのに対し、”ユニーク乗客数”が1307と数値が一致していません。
これは”name”だけではレコードが一意に定まらない(=”name”が重複しているレコードが存在している)ことを示しています。
実際にどのレコードで重複が発生しているかを確かめるにはFIXED関数を使った計算式を用いる方法が有効です。

計算式は以下の通りです。
f:id:gri-blog:20201216095424p:plain
簡単に説明するとこの計算式は
「”name”ごとに1を足す」
つまり
「乗客者氏名ごとにレコード数を集計する」
といった意味合いになります。
仮にPKが”name”であれば、1乗客者氏名に対し1レコードという関係が成立するので、集計結果はすべて1になります。
そうでない場合は、集計結果に2以上の整数も入り、それらの氏名が重複しているということになります。

集計結果は以下の通りです。
f:id:gri-blog:20201216095506p:plain
全1309レコードの内、1305レコードは”PK確認”の値が1(=1乗客者氏名に対し1レコード)となっていますが、
残りの4レコードは”PK確認”の値が2(=1乗客者氏名に対し2レコード)となっています。
さらに、数字の部分を右クリックし、”データの表示”をクリックすると対象データの中身を確認することもできます。
f:id:gri-blog:20201216095548p:plain
f:id:gri-blog:20201216095611p:plain
これをみると”Connolly, Miss. Kate”さんと”Kelly, Mr. James”さんのレコードが重複していることが確認できます。
ここから重複している原因を特定するのはむずかしいですが、いずれにせよこのようなログがあるということを念頭に置いて分析をすすめるのが好ましいです。

複数のカラムでデータのレコードが一意に定まると想定できる場合

次はアメリカで人気の新生児名リスト(TopBabyNamesbyState.csv)のPKを確認していきます。
Tableauの公式サイト上では、このデータは「1910~2012年の各年で最も人気のある男児名と女児名を州別に示したデータ」と書かれているため、
複合PKは”year”,”state”,”gender”であると想定できます。
これを先ほど紹介したFIXED関数を用いた方法で確認していきます。

計算式は以下の通りで、FIXEDの後に複合PKだと思われるカラムをカンマ区切りで記載しています。
f:id:gri-blog:20201216095712p:plain
簡単に説明するとこの計算式は
「”year”,”state”,”gender”の組み合わせごとに1を足す」
つまり
「年×州×性別ごとにレコード数を集計する」
といった意味合いになります。

集計結果は以下の通りです。
f:id:gri-blog:20201216095730p:plain
今度は全10506レコードの内、すべてのレコードで”PK確認”の値が1、
つまり年・州・性別ごとにレコードが一意に定まることが確認できます。

さいごに

データ分析において、正しい数値を出力するということは当然のことですがとても重要なことです。
データ整形ミスを減らすためにも、PKを確認する習慣をつけることを一分析官として強くお勧めします!

mochizuki
データサイエンティスト。筋トレ、温泉、時々スキー。