横統合の仕様とキー項目の扱われ方について知りたい

本記事について

横統合におけるキー項目とは、2つのデータファイルのレコードとレコードを統合する際に参照するカラムです。設定した2つのキー項目の値が一致するレコード同士が統合されます。
横統合は、キー項目に設定したカラムの値によって統合後のデータが大きく異なるため、横統合の仕様をよく考慮してキー項目を設定する必要があります。

そのため、本記事では3つの基本的な横統合とキー項目に必要なカラムについて紹介と、キー項目に不適切な値について紹介します。横統合を実施するにあたり、設定すべきキー項目について知りたい、横統合の具体的な利用シーンについて知りたい場合は本記事をご参照ください。

横統合の基本的な操作手順について知りたい場合は、「データを横統合したい」をご参照ください。

1対1でレコードが紐づく横統合

最初に基本的な横統合の1つとして「1レコード対1レコードの横統合」について紹介します。1対1でレコードが紐づく横統合はユニークカラム同士で横統合を行いたいケースで実施されます。
そのため、必要なキー項目のカラムは2つのデータファイルともユニークカラムである必要があります。
※ ユニークカラム:重複した値を含まないカラム

以下より統合の3つのパターンに分けて、「1対1でレコードが紐づく横統合」の統合例を紹介します。

【統合の3つのパターン】

1対1でレコードが紐づく横統合を行うユースケース

1対1でレコードが紐づく横統合を行うユースケースは、来店型店舗用の「顧客データ(来店)」とECサイト用の「顧客データ(EC)」と顧客データを分けて管理しており、「顧客ID」をキー項目としてデータファイルを1つにまとめたい場合などが挙げられます。

全てのデータを統合する

統合する2つのデータファイルのキー項目がユニークカラムである場合、2つのキー項目に共通しているレコードは1対1の関係で統合されます。

例えば下記画像においては、以下のレコードが1対1の関係で統合されます。

● 顧客データ(来店):『顧客ID』「101」/ 顧客データ(EC):『顧客ID』「101」
● 顧客データ(来店):『顧客ID』「102」/ 顧客データ(EC):『顧客ID』「102」

また「全てのデータを統合する」の場合、2つのキー項目に共通しないデータも統合データに残ります。
以下の4つのレコードが統合データに残ります。

● 顧客データ(来店):『顧客ID』「103」「104」
● 顧客データ(EC):『顧客ID』「106」「107」 

共通のデータのみ統合する

統合する2つのデータファイルのキー項目がユニークカラムである場合、2つのキー項目に共通しているレコードは1対1の関係で統合されます。

例えば下記画像においては、以下のレコードが1対1の関係で統合されます。

● 顧客データ(来店):『顧客ID』「101」/ 顧客データ(EC):『顧客ID』「101」
● 顧客データ(来店):『顧客ID』「102」/ 顧客データ(EC):『顧客ID』「102」

また「共通のデータのみ統合する」の場合、2つのキー項目に共通しないデータは統合データに残りません。

先に選択したデータに対して統合する

統合する2つのデータファイルのキー項目がユニークカラムである場合、2つのキー項目に共通しているレコードは1対1の関係で統合されます。

例えば下記画像においては、以下のレコードが1対1の関係で統合されます。

● 顧客データ(来店):『顧客ID』「101」/ 顧客データ(EC):『顧客ID』「101」
● 顧客データ(来店):『顧客ID』「102」/ 顧客データ(EC):『顧客ID』「102」

また「先に選択したデータに対して統合する」の場合、2つのキー項目に共通しないデータのうち、先に選択したデータが残ります。
以下2つのレコードが統合データに残ります。

● 顧客データ(来店):『顧客ID』「103」「 104」

多対1でレコードが紐づく横統合

次に、基本的な横統合のもう1つの例として「多レコード対1レコードの横統合」について紹介します。多対1でレコードが紐づく横統合は重複した値を含むカラムとユニークカラムで横統合を行いたいケースで実施されます。
そのため、必要なキー項目のカラムの選択において、1つのデータファイルからは重複した値が含まれるカラムを、もう1つのデータファイルからはユニークカラムを選択する必要があります。

以下より統合の3つのパターンに分けて、「多対1でレコードが紐づく横統合」の統合例を紹介します。

【統合の3つのパターン】

多対1でレコードが紐づく横統合を行うユースケース

多対1でレコードが紐づく横統合を行うユースケースは、アクセスログデータや受注データなど同一のユーザーの行動が複数回記録されているようなデータの「重複した顧客の値を持つカラム」に対して、顧客データの情報を追加したいケースなどが挙げられます

例えば、同一の顧客の購入記録が複数記録されている「受注データ」に「顧客データ」の顧客情報を追加する際、受注データの重複した値を含む「顧客ID」カラムと顧客データのユニークな「顧客ID」カラムをキー項目としてデータファイルを1つにまとめたい場合などが挙げられます。

全てのデータを統合する

キー項目に「重複した値を含むカラム」を設定している場合、キー項目の重複した値のレコード全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが2対1の関係で統合されます。

● 受注データ:『顧客ID』「101」「101」 / 顧客データ:『顧客ID』「101」

また「全てのデータを統合する」の場合、2つのキー項目に共通しないデータも統合データに残ります。
以下の5つのレコードが統合データに残ります。

● 受注データ:『顧客ID』「105」「106」    
● 顧客データ:『顧客ID』「102」「103」「104」

共通のデータのみ統合する

キー項目に「重複した値を含むカラム」を設定している場合、キー項目の重複した値のレコード全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが2対1の関係で統合されます。

● 受注データ:『顧客ID』「101」「101」 / 顧客データ:『顧客ID』「101」

また「共通のデータのみ統合する」の場合、2つのキー項目に共通しないデータは統合データに残りません。

先に選択したデータに対して統合する

キー項目に「重複した値を含むカラム」を設定している場合、キー項目の重複した値のレコード全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが2対1の関係で統合されます。

● 受注データ:『顧客ID』「101」「101」 / 顧客データ:『顧客ID』「101」

また「先に選択したデータに対して統合する」の場合、2つのキー項目に共通しないデータのうち、先に選択したデータが残ります。
以下の2つのレコードが統合データに残ります。

● 受注データ:『顧客ID』「105」「106」

多対多でレコードが紐づく横統合について

2つのデータファイルのキー項目をどちらも「重複した値を含むカラム」で設定していると、多レコード対多レコードの統合が行われます。

この場合、統合後のデータが膨大なレコード量のデータが作成される可能性があるため、キー項目の選択に十分ご注意の上、横統合を行ってください

【例】
以下のレコードが2×2の関係で統合されます
● 受注データ:『顧客ID』「101」「101」 / 顧客データ:『顧客ID』「101」「101」

「全てのデータを統合する」条件の場合、以下の4つのレコードが統合データに残ります。
● 受注データ:『顧客ID』「105」「106」
● 顧客データ:『顧客ID』「103」「104」

1対多でレコードが紐づく横統合

次に、基本的な横統合のもう1つの例として「1レコード対多レコードの横統合」について紹介します。1対多でレコードが紐づく横統合はユニークカラムと重複した値を含むカラムで横統合を行いたいケースで実施されます。
そのため、必要なキー項目のカラムの選択において、1つのデータファイルからはユニークカラムを、もう1つのデータファイルからは重複した値が含まれるカラムを選択する必要があります。

以下より統合の3つのパターンに分けて、「1対多でレコードが紐づく横統合」の統合例を紹介します。

【統合の3つのパターン】

1対多でレコードが紐づく横統合を行うユースケース

1対多でレコードが紐づく横統合を行うユースケースは、顧客データの情報に対して、アクセスログデータや受注データなど同一のユーザーの行動が複数回記録されているようなデータの「重複した顧客の値を持つカラム」を追加したいケースなどが挙げられます

例えば、「顧客データ」に同一の顧客の購入記録が複数記録されている「受注データ」の顧客情報を追加する際、顧客データのユニークな「顧客ID」カラムと受注データの重複した値を含む「顧客ID」カラムをキー項目としてデータファイルを1つにまとめたい場合などが挙げられます。

全てのデータを統合する

キー項目に「ユニークカラム」を設定している場合、キー項目の「重複した値を含むカラム」全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが1対2の関係で統合されます。

● 顧客データ:『顧客ID』「101」 / 受注データ:『顧客ID』「101」「101」

また「全てのデータを統合する」の場合、2つのキー項目に共通しないデータも統合データに残ります。
以下の5つのレコードが統合データに残ります。

● 顧客データ:『顧客ID』「102」「103」「104」
● 受注データ:『顧客ID』「105」「106」    

共通のデータのみ統合する

キー項目に「ユニークカラム」を設定している場合、キー項目の「重複した値を含むカラム」全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが1対2の関係で統合されます。

● 顧客データ:『顧客ID』「101」 / 受注データ:『顧客ID』「101」「101」

また「共通のデータのみ統合する」の場合、2つのキー項目に共通しないデータは統合データに残りません。

先に選択したデータに対して統合する

キー項目に「ユニークカラム」を設定している場合、キー項目の「重複した値を含むカラム」全てに対して共通する値のレコードが結合します。

例えば下記画像においては、以下のレコードが1対2の関係で統合されます。

● 顧客データ:『顧客ID』「101」 / 受注データ:『顧客ID』「101」「101」

また「先に選択したデータに対して統合する」の場合、2つのキー項目に共通しないデータのうち、先に選択したデータが残ります。
以下の3つのレコードが統合データに残ります。

● 顧客データ:『顧客ID』「102」「103」「104」

キー項目に不適切な値が入っていた場合の横統合の仕様

最後にキー項目に不適切なカラムの値について説明します。キー項目に設定する値に「空白」「NULL」が含まれる場合、意図しない不要なレコードの生成や、膨大なレコード数のデータファイルの作成につながるため、横統合前に該当のレコードを抽出しておく必要があります

以下ではキー項目に「空白」「NULL」が含まれる横統合の統合データについて紹介します。想定しない統合結果の場合は以下の例を参考に、キー項目に「空白」「NULL」が含まれていないかご確認ください。

キー項目に「空白」が含まれる場合

キー項目として選択したカラムに「空白」が含まれている場合、キー項目が「空白」のレコード同士が多レコード対多レコードの関係で統合されます。

例えば下記画像においては、以下のレコードが2対2の関係で統合されます。

● 受注データ:『顧客ID』「(空白)」「(空白)」 / 顧客データ:『顧客ID』「(空白)」「(空白)」

また「全てのデータを統合する」条件の場合、以下の4つのレコードが統合データに残ります。

● 受注データ:『顧客ID』「105」「106」
● 顧客データ:『顧客ID』「103」「104」

キー項目に「NULL」が含まれる場合

キー項目として選択したカラムに「NULL」が含まれている場合、キー項目が「NULL」のレコードはどのレコードとも統合されません。
※ NULL同士でも統合されません

例えば下記画像においては、以下のレコードが2対1の関係で統合されます。

● 受注データ:『顧客ID』「101」「101」 / 顧客データ:『顧客ID』「101」

また「全てのデータを統合する」条件の場合、以下の5つのレコードが統合データに残ります。

● 受注データ:『顧客ID』「NULL」「NULL」    
● 顧客データ:『顧客ID』「102」「NULL」「NULL」