重複の検査

コンセプト情報

DUPLICATES コマンド

1 つ以上のフィールドの値が重複している、すなわち重複レコードは、データの入力ミスの結果であるか、もしくは調査を回避するためにクレジット カードの決済を分けている、などの不正行為の結果である可能性があります。

一意の値の要件

重複を含んではいけないフィールドとは、その値によってレコードを一意に識別するフィールドです。たとえば、従業員テーブルの場合、従業員番号は各従業員を一意に識別するものなので重複してはいけません。

有効な重複

重複値が有効な場合もあります。たとえば、取引テーブルには、重複する顧客番号が含まれているかもしれませんが、これは同じ顧客によって複数の取引が行われたためである可能性があります。

さまざまな種類の重複検査

Analytics では、次のような方法で重複を検査することができます。

テスト範囲 次の場合にはこのテストを使用します。
1 つのフィールド

特定フィールドのすべての値が一意である必要がある、たとえば、従業員番号や小切手番号など。

2 つ以上のフィールドの組み合わせ

各フィールドが分離した状態では一意性が要求されないが、フィールドを組み合わせた状態では一意性が要求される。

年間の給与支払ファイルでは、従業員番号フィールドと給料日フィールドはそれぞれ多くの重複を含んでいるでしょう。従業員は 2 週間ごとに給与が支払われ、複数の従業員が同じ日に給与を受け取ります。

ただし、個々の従業員は特定の日付に一度しか現れてはいけません。従業員番号と支払日を組み合わせて全体で重複が存在する場合、従業員が同じ給与期間に 2 回支払われている可能性があります。

レコードのすべてのフィールド

レコード内のすべてのフィールドが複製されている、全体が重複しているレコードを調べる。全体が重複しているレコードは、データの入力ミスの結果であるか、もしくは他の不正な取引行為の結果である可能性があります。

並べ替えと重複

一般に、重複がないかどうかをテストするには、1 つまたは複数のキー フィールドを並べ替える必要があります。キー フィールド内の重複値が、それら同士がすぐ隣に並んでいる場合にのみ検出できるためです。

キー フィールドを並べ替えずに重複値がないかどうかをテストしても、隣り合っていない重複値は重複値として報告されません。同じ重複値の塊が 2 つ以上ある場合でも、それらの塊は別々のグループの重複値として報告されます。

分析の目的によっては、キー フィールドを並べ替えずに重複値がないかどうかをテストすることにも意味がある場合があります。たとえば、ソース テーブル内ですぐ隣に並んでいる重複値のみを検出して、隣り合っていない重複値は無視したい場合が、その例です。

出力テーブルにグループ番号フィールドを含める

重複値の出力テーブルには、グループ番号フィールドを含めることができます。このフィールドは、一意の各重複値グループに対し、1 ずつ増える連番を割り当てたものです。重複値グループを番号で参照するこの機能は、出力テーブル内のデータを分析する場合に使用できます。

重複値の出力テーブルをグループ番号でフィルター処理する

複数のキー フィールドを組み合わせて使用することで、買掛金テーブルに重複レコードがないかどうかをテストすることができます。

  • Vendor_No(ベンダー番号)
  • Invoice_No(請求書番号)
  • Invoice_Date(請求書番号)
  • Invoice_Amount(請求金額)

結果の重複値出力テーブルをフィルター処理することで、いくつかの重複値グループのみを追加処理することができます。

キー フィールドの組み合わせを使ってフィルターを作成することは、次のように骨が折れます。例:

SET FILTER TO ((Vendor_No = "11475") AND (Invoice_No = "8752512") AND (Invoice_Date = `20191021`) AND (Invoice_Amount = 7125.80)) OR ((Vendor_No = "12130") AND (Invoice_No = "589134") AND (Invoice_Date = `20191117`) AND (Invoice_Amount = 10531.71)) OR ((Vendor_No = "13440") AND (Invoice_No = "5518912") AND (Invoice_Date = `20191015`) AND (Invoice_Amount = 11068.20))

このようにする代わりに、次のようにグループ番号を基準にしたフィルターを作成することでも、同じ結果が得られます。

SET FILTER TO MATCH(GROUP_NUM, 3 , 8, 11)

手順

重複する値や、全体が重複しているレコードが存在するかどうかを検出するために、アクティブなテーブル内の 1 つ以上のフィールドを検査することができます。

重複の削除

要約操作を使用して、データセットから重複値またはレコードを削除し、残った一意の値またはレコードを新しい Analytics テーブルに保存することができます。