SQL分析データ準備と基礎統計#02:ユニーク性の維持
元データから分析データを作成するにあたって、悩まされることが多いのが、データの重複です。いろいろなデータを結合して最終的なデータセットを用意しますが、結合の際に重複が発生しているとデータが膨らみ、件数が合わないとかで手戻りが発生します。
分析単位のユニーク性確認
よくあるパターンの一つが分析単位の重複です。例えば顧客番号と契約番号が分析単位であるとします。一人の顧客が複数の契約をしているなら、顧客番号では重複しうることになり、顧客番号と契約番号のセットでユニークかを確認する必要があります。このような場合の確認SQLは以下です:
元データがユニークであれば、結果は0件を返しますが、重複があればそのデータのみ表示されます。
マスターのユニーク性確認
マスターと呼ばれる区分情報のデータの重複もあり得ます。例えば製品番号と製品名称のようなケースです。これもアプローチは同じですが、ちょっと厄介なのは製品番号に対して複数の製品名称が紐づく場合と、同じ製品名称なのに製品番号が異なる場合があることです。
このSQLでは、srcにて組み合わせ単位でまずユニークにし、その上で製品番号のユニークチェックをidchkで、製品名称のユニークチェックをdescchkにて行っています。最後にどちらかで重複していたケースをピックアップしています。
重複があった場合の排除
重複があった場合の排除方法として、分析単位だけで完結する場合には単にgroup by すればよいのですが、他の列との兼ね合いでどちらかを選択しなければならない場合もあります。ということは他の列は異なっているため、それらを順序付けに用い、一行のみに絞り込みます。以下の例では更新日付が異なる重複行があった場合で、更新日付の新しい順に番号を振り、その番号(rndesc)が1の値のみを取得しています。
///
この記事が気に入ったらサポートをしてみませんか?