DUPLICATES コマンド
重複値または重複レコードが Analytics テーブル内に存在するかどうかを検出します。
構文
DUPLICATES <ON> {キー フィールド <D> <...n>|ALL} <OTHER フィールド <...n>|OTHER ALL> <UNFORMATTED> <ADDGROUP> <PRESORT> <IF テスト> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <APPEND> <OPEN> <TO {SCREEN|テーブル名|ファイル名|PRINT}> <LOCAL> <HEADER ヘッダー テキスト> <FOOTER フッターテキスト> <ISOLOCALE ロケールコード>
パラメーター
名前 | 説明 |
---|---|
ON キーフィールド D <...n> | ALL |
重複がないかどうかをテストする 1 つまたは複数のキーフィールド、あるいは式。
|
OTHER フィールド <...n> | OTHER ALL 省略可能 |
出力に含める 1 つ以上の追加フィールド。
|
UNFORMATTED 省略可能 |
結果をファイルに出力する場合、ページ見出しや改ページは除去されます。 |
ADDGROUP 省略可能 |
出力テーブルにグループ番号フィールド(GROUP_NUM)を含めます。 [グループ番号]フィールドは、一意の各重複値グループに対し、1 ずつ増える連番を割り当てたものです。 ヒント 重複値グループを番号で参照するこの機能は、出力テーブル内のデータを分析する場合に使用できます。 |
PRESORT 省略可能 |
コマンドを実行する前にキー フィールドでテーブルを並べ替えます。 メモ GROUP コマンドの内部では PRESORT を使用することができません。 |
IF テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。 コマンドは、その条件を満たすレコードに対してのみ実行されます。 メモ IF パラメーターは、任意の範囲パラメーター(WHILE、FIRST、NEXT)が適用された後に、テーブルに残るレコードに対してのみ評価されます。 |
WHILE テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。 条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。 メモ WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。 |
FIRST 範囲 | NEXT 範囲 省略可能 |
処理するレコード数:
範囲は処理するレコード数を指定します。 FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。 |
APPEND 省略可能 |
コマンドの出力を既存ファイルに上書きしないで、そのファイルの末尾に追加します。 メモ コマンドの出力と既存のファイルの構造が同一であるようにする必要があります。
出力は、既存ファイルとの間でファイル構造が違っている場合でも、Analytics によって既存ファイルに追加されます。 出力と既存のファイルの構造が一致しない場合は、データが混在、不足、不正確になります。 |
OPEN 省略可能 |
コマンドを実行した後、コマンドによって作成されたテーブルを開きます。 コマンドが出力テーブルを作成する場合にのみ有効です。 |
TO SCREEN | テーブル名 | ファイル名 | PRINT 省略可能 |
コマンドの結果を送信する場所:
|
LOCAL 省略可能 |
Analytics プロジェクトと同じ場所に出力ファイルを保存します。 メモ Analytics テーブルである出力ファイルを含むサーバー テーブルに対してコマンドを実行するときにのみ適用されます。 LOCAL パラメーターは TO パラメーターの直後に置く必要があります。 |
HEADER ヘッダーテキスト 省略可能 |
レポートの各ページの最上部に挿入されるテキスト。 ヘッダーテキストは引用符で囲んだ文字列として指定する必要があります。 この値は、Analytics のシステム変数である HEADER の値よりも優先されます。 |
FOOTER フッターテキスト 省略可能 |
レポートの各ページの最下部に挿入されるテキスト。 フッターテキストは引用符で囲んだ文字列として指定する必要があります。 この値は、Analytics のシステム変数である FOOTER の値よりも優先されます。 |
ISOLOCALE ロケールコード 省略可能 |
メモ Analytics の Unicode 版にのみ適用されます。 システム ロケールは「言語-国」の形式で入力します。 たとえば、カナダ フランス語はコード「fr_ca」を入力します。 次のコードを使用します。
ISOLOCALE を使用しない場合は、デフォルト システム ロケールが使用されます。 |
Analytics の出力変数
名前 | 含む |
---|---|
GAPDUPn |
コマンドによって確認されたギャップ、重複、またはあいまい重複グループの合計数。 |
例
1 つのフィールドの重複値のテスト
次の例:
- Invoice_Number フィールドの重複値のテスト
- 重複する請求書番号を含むレコードを新しい Analytics テーブルに出力する
DUPLICATES ON Invoice_Number OTHER Vendor_Number Invoice_Date Invoice_Amount PRESORT TO "Duplicate_Invoices.FIL"
2 つ以上のフィールドの組み合わせの重複値のテスト
次の例:
- Invoice_Number および Vendor_Number フィールドの値の重複した組み合わせのテスト
- 同じ請求書番号と同じ業者番号を含むレコードを新しい Analytics テーブルに出力する
このテストと前のテストの間の違いは、2 つの異なる業者番号からの同じ請求書番号が誤検出として報告されないことです。
DUPLICATES ON Invoice_Number Vendor_Number OTHER Invoice_Date Invoice_Amount PRESORT TO "Duplicate_Invoices.FIL"
重複するレコードを検索する
下記の例では以下が行われます。
- Inventory テーブルのすべてのフィールドに重複値がないかどうかをテストする
- 完全に同じレコードを新しい Analytics テーブルに出力する
DUPLICATES ON ProdNum ProdClass Location ProdDesc ProdStatus UnitCost CostDate SalePrice PriceDate PRESORT TO "Duplicate_Inventory_Items.FIL"
この構文は、ALL を使用すれば次のように簡素化できます。
DUPLICATES ON ALL PRESORT TO "Duplicate_Inventory_Items.FIL"
重複値の出力テーブルをグループ番号でフィルター処理する
複数のキー フィールドを組み合わせて使用することで、買掛金テーブルに重複レコードがないかどうかをテストすることができます。
- 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)
備考
メモ
このコマンドの動作の詳細については、Analytics のヘルプを参照してください。
並べ替えと重複
一般に、DUPLICATES コマンドは、並べ替えた 1 つまたは複数のキー フィールドに対してのみ実行する必要があります。 キー フィールド内の重複値が、それら同士がすぐ隣に並んでいる場合にのみ検出できるためです。
キー フィールドを並べ替えずに DUPLICATES コマンドを実行しても、隣り合っていない重複値は重複値として報告されません。 同じ重複値の塊が 2 つ以上ある場合でも、それらの塊は別々のグループの重複値として報告されます。
分析の目的によっては、キー フィールドを並べ替えずに DUPLICATES コマンドを実行することにも意味がある場合があります。 たとえば、ソース テーブル内ですぐ隣に並んでいる重複値のみを検出して、隣り合っていない重複値は無視したい場合が、その例です。