重複の検査
コンセプト情報
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 つ以上のフィールドを検査することができます。

文字、数値、および日付時刻フィールドの重複を検査することができます。文字フィールドに文字と数字が続けて現れる場合、すべての英数文字が検査されます。
メモ
有効な結果を得るために、テストされるフィールドは、事前に順番どおりに整列されている必要があります。フィールドの並べ替えは、前もって実行しておくか、重複のテスト時に [あらかじめ並べ替える] オプションを使用して行うことができます。
フィールドの選択
- ナビゲーターで、重複をテストするテーブルを開きます。
- [分析 > 重複] を選択します。
-
1 つまたは複数のフィールド内の重複値を検出するには
-
[メイン]タブで、次のいずれかを行います。
-
[重複の対象] リストから、テストするフィールドを選択します。
-
[重複の対象] をクリックして、テストするフィールドを選択するか、または式を作成します。
複数のフィールドを選択する順序が、出力結果にフィールドが表示される順序になります。既存の Analytics テーブルに結果を追加する場合は、フィールドの選択と順序は、既存のテーブルのフィールドの選択と順序と同一でなければなりません。
-
-
省略可能。[重複の対象] をクリックした場合は、選択した 1 つ以上のフィールドの横の並べ替えの矢印
をクリックすることにより、出力結果を降順に並べ替えるように指定できます (デフォルトは昇順)。
-
次のいずれかを実行します。
-
[フィールドの一覧] リストで、出力結果に含める 1 つ以上の追加フィールドを選択します。
-
[フィールドの一覧] をクリックして含める 1 つ以上の追加フィールドを選択するか、または式を作成します。
追加フィールドによって、結果に有益なコンテキストを提供することができます。重複のテスト対象に選択したフィールドは、結果レコードの先頭に自動的に表示されます。それらを [フィールドの一覧] で特別に選択する必要はありません。
-
-
省略可能。出力テーブルに[グループ番号]フィールドを含めたい場合は、[グループの追加]を選択します。
[グループ番号]フィールドは、一意の各重複値グループに対し、1 ずつ増える連番を割り当てたものです。
-
-
すべての重複値レコードを検出するには
-
[メイン]タブの[重複の対象]をクリックします。
-
[すべて追加]をクリックして、すべてのフィールドを[選択済みのフィールド]に追加します。
-
省略可能。選択した 1 つ以上のフィールドの横の並べ替えの矢印
をクリックすることにより、出力結果を降順に並べ替えるように指定できます (デフォルトは昇順)。
-
[OK]をクリックします。
結果レコードには、テーブル内のすべてのフィールドが表示されるので、[フィールドの一覧]リストからフィールドを選択する必要はありません。
-
省略可能。出力テーブルに[グループ番号]フィールドを含めたい場合は、[グループの追加]を選択します。
[グループ番号]フィールドは、一意の各重複値グループに対し、1 ずつ増える連番を割り当てたものです。
-
レコードを処理対象から除外する(省略可能)
-
現在のビューに処理から除外したいレコードがある場合には、次のようにします。
-
[If] テキストボックスに条件を入力します
-
[If] をクリックし、式ビルダーを使用して IF ステートメントを作成します
If 条件は、ビュー内のすべてのレコードを判断し、指定された条件を満たさないレコードを除外します。
メモ
If 条件は、任意の範囲オプション(先頭、次へ、While)が適用された後に、テーブルに残るレコードに対してのみ評価されます。
-
[事前並べ替え]をオフにする(省略可能)
-
テストフィールドが前の操作で既に並べ替え済みであれば、[あらかじめ並べ替える] をオフにすることにより、大きなテーブルの重複を検査する場合の時間を節約できます。
フィールド内のデータが並べ替えられていない場合は、すべての重複が確実に検出されるようにするために、[あらかじめ並べ替える] はオンのままにしておいてください。
メモ
[あらかじめ並べ替える] をオフにする場合、結果を有効なものにするには、検査対象のフィールドは、前に並べ替えられたフィールドと同じものにする必要があります。
選択したフィールドとソート済みフィールドの間に不一致がある場合は、結果に "警告:ファイルの順序が正しくありません" というメッセージが提示されます。結果を Analytics テーブルに出力する場合、警告メッセージはコマンド ログに記載されます。
出力を構成する
- [出力]タブをクリックします。
-
[出力先] パネルで、適切な出力オプションを選択します。
メモ
特定の分析操作に対して適用されない出力オプションは無効になります。
オプション 詳細 画面 Analytics の表示領域に結果を表示します
ヒント
ヒント表示領域内で、リンク付きの任意の結果値をクリックすると、関連付けられているソーステーブル内の 1 つまたは複数のレコードにドリルダウンすることができます。
出力レコードに多数のレコードが含まれている場合は、結果を画面に表示するよりファイルに保存した方が、処理が速く便利です。
印刷 通常使うプリンターに結果を送信します。 グラフ 結果を基にグラフを作成し、それを Analytics 表示領域に表示します ファイル 結果を新しい Analytics テーブルまたはテキストファイル保存または追加するか、あるいは既存の Analytics テーブルまたはファイルを上書きします。
- Analytics テーブル - テーブルがまだプロジェクトに存在しないときは、開いているプロジェクトに追加されます。
- テキストファイル - ファイルは Analytics の外部に保存されます。
-
出力タイプとして [ファイル] を選択した場合は、[出力指定] パネルで適切な情報を指定します。
オプション 詳細 ファイル タイプ -
Analytics テーブル - 結果を Analytics テーブルに保存または追加するか、既存のテーブルを上書きします。
-
ASCII テキストファイルまたは Unicode テキストファイル - 結果をテキストファイルに保存または追加するか、既存のファイルを上書きします。
名前 -
新しいテーブルまたはファイルを保存するには、次のようにします。
[名前] テキストボックスにファイル名を入力します。Analytics によってファイル名があらかじめ設定されている場合は、その設定されている名前を受け入れることも、あるいは変更することもできます。
-
既存のテーブルまたはファイルに追加するか、既存のテーブルまたはファイルを上書きするには、次のようにします。
[名前] をクリックして、[保存] または [名前を付けて保存] ダイアログボックスで既存のテーブルまたはファイルを選択します。
絶対ファイルパスや相対ファイルパスを指定したり、別のフォルダーへ移動したり、プロジェクトの場所とは違う場所でファイルの保存、追加、または上書きを実行したりできます。例:
C:\Results\Output.fil または Results\Output.fil。
メモ
Analytics のテーブル名は、最長で 64 文字の英数字(拡張子 .FIL を含まない)に制限されます。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。
ローカル サーバーテーブルに接続されており、Analytics テーブルに保存、追加、またはそれを上書きする場合にのみ有効になります。
-
[ローカル] を選択すると、Analytics プロジェクトと同じ場所で保存、追加、または上書きを実行できます。
-
[ローカル] を選択解除したままにしておくと、サーバーの Prefix フォルダーで保存、追加、または上書きを実行できます。
メモ
出力結果が AX Server テーブルの分析や処理から生成される場合は、[ローカル]を選択します。結果テーブルを AX Server へインポートするために[ローカル]設定を選択解除することはできません。
-
- 省略可能。適切なテキストボックスにヘッダーまたはフッターを指定します。
複数行のヘッダーやフッターを入力する場合は、[ヘッダー] または [フッター] ボタンをクリックします。ヘッダーまたはフッターのテキストボックスで、改行文字としてセミコロン (;) を入力することもできます。
デフォルトでは、ヘッダーとフッターは中央揃えで出力されます。ヘッダー テキストやフッター テキストを左揃えにするには、テキストの前に始め山かっこ(<)を入力します。複数行を左揃えにするには、各行の先頭に山かっこが必要です。
メモ
出力タイプによっては、ヘッダーまたはフッターを指定できないものもあります。
処理の範囲を指定する
- [詳細]タブをクリックします。
-
[適用範囲] パネルで、適切なオプションを選択します。
- すべて
- 先頭
- 次へ
- While
詳しく表示
適用範囲オプション 詳細 すべて (デフォルト) ビュー内のすべてのレコードを処理することを指定します。 先頭 テキストボックスに数を入力します。ビュー内の先頭レコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。 次へ テキストボックスに数を入力します。ビュー内の現在選択したレコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。行内のデータではなく、ビュー内の左端列で実際のレコード番号が選択されている必要があります。 While WHILE ステートメントを使用して、特定の条件または条件のセットに基づいてビュー内のレコードの処理を制限します。
[While] テキストボックスに条件を入力するか、または [While] ボタンをクリックし、式ビルダーを利用して WHILE ステートメントを作成します。
WHILE ステートメントでは、指定した条件が true と評価される間のみ、ビュー内のレコードを処理することができます。条件が false と評価されるとすぐに処理が終了し、それ以上レコードは判断されません。
While オプションは、"すべて"、"先頭"、または "次" オプションと組み合わせて使用することができます。1 つの制限に達するとすぐに、レコードの処理が停止します。
メモ
[先頭] または [次] オプションは、テーブル内のレコードの物理的な順序またはインデックス付けされた順序のいずれかを参照します。[先頭] または [次] では、テーブル ビューに適用されたフィルタリングまたはクイック ソートは無視されます。ただし、分析操作の出力結果ではすべてのフィルターを考慮します。
ビューでクイック ソートが実行されている場合、"次" は "先頭" のように動作します。
設定の最終処理と結果の出力
-
省略可能。出力タイプとして [ファイル] を選択した場合、出力結果を既存テーブルまたはファイルの末尾に追加するときは、次のいずれかを行います。
-
出力結果とテーブルまたはファイルの構造がまったく同じであることがわかっている場合は、[既存のファイルに追加する] を選択します。
[既存のファイルに追加する] では、出力結果と既存のテーブルやファイルのレコード長が異なっていても、強制的に追加が実行されます。レコード長が異なっていれば、データ構造は同じではなく、追加は正しく動作しません。
-
出力結果と既存のテーブルのレコード長を Analytics に比較させたい場合は、[既存のファイルに追加する] を選択解除したままにしておきます。この自動チェックは Analytics テーブルに対してのみ実行され、テキストファイルには実行されません。
メモ
出力結果と既存のテーブルが同一のデータ構造であるかどうかが不明な場合は、[既存のファイルに追加する] を選択解除したままにしておきます。追加およびデータ構造の詳細については、既存テーブルへの出力結果の追加を参照してください。
-
-
出力の種類としてファイル(Analytics テーブル)を選択した場合、操作の完了時に、自動的に出力テーブルを開く場合は、[出力テーブルを開く]を選択します。
- [OK]をクリックします。
出力結果では、次の両方を行う場合は、重複する値またはレコードのみが表示され、値またはレコードの最初の出現は表示されません。
- 結果を画面またはテキストファイルに出力する
- 出力結果にテストされたフィールドのみを含め、追加のフィールドを選択しない
画面に出力する場合は、値をクリックすると、重複に加えて値またはレコードの最初の出現を見ることができます。
- 上書きを確認するメッセージが表示されたら、適切なオプションを選択します。
[最後に追加]オプションが表示されることを期待していたのに表示されない場合は、[いいえ]をクリックして操作をキャンセルし、既存テーブルへの出力結果の追加を参照してください。
重複の削除
要約操作を使用して、データセットから重複値またはレコードを削除し、残った一意の値またはレコードを新しい Analytics テーブルに保存することができます。

フィールドの選択
- ナビゲーターで、重複を削除するテーブルを開きます。
- [分析 > 要約] の順に選択します。
- [メイン]タブで、次のいずれかを行います。
- [要約の対象]リストから、重複値を含んでいる可能性のあるフィールドを選択します。
- [要約の対象]をクリックして、フィールドを選択するか、または式を作成します。
フィールドを選択する順序が、結果に表示する列の順序になります。
メモ
該当するフィールドを選択し、必要な一意性の度合いを実現します。
たとえば、重複する従業員レコードを削除し、姓フィールドのみを選択する場合、同じ姓で名前が異なる従業員のすべてのレコードを削除するリスクがあります。姓フィールドと名フィールドの両方を選択すると、一意性の度合いが上がります。
完全に重複するレコードのみを削除するには、[要約の対象]と[すべて追加]をクリックします。
- [小計フィールド]は何も選択しないでください。
- 省略可能。次のいずれかを実行します。
- [その他のフィールド]リストから、出力結果に含めるその他のフィールドを選択します。
- [その他のフィールド]をクリックして、フィールドを選択するか、または式を作成します。
メモ
各要約グループ内のすべてのレコードが同じ値を含んでいるフィールドに対してのみを選択してください。詳細については、その他のフィールド オプションを参照してください。
[事前並べ替え]をオフにする(省略可能)
-
重複値を含んでいる可能性のあるフィールドが既に並べ替え済みであれば、[あらかじめ並べ替える] を選択解除します。
フィールド内のデータがソートされていない場合は、有効な結果を得るために、[あらかじめ並べ替える]はオンのままにしておいてください。
レコードを処理対象から除外する(省略可能)
-
現在のビューに処理から除外したいレコードがある場合には、次のようにします。
-
[If] テキストボックスに条件を入力します
-
[If] をクリックし、式ビルダーを使用して IF ステートメントを作成します
If 条件は、ビュー内のすべてのレコードを判断し、指定された条件を満たさないレコードを除外します。
メモ
If 条件は、任意の範囲オプション(先頭、次へ、While)が適用された後に、テーブルに残るレコードに対してのみ評価されます。
-
出力を構成する
- [出力]タブをクリックします。
- [出力先]パネルで、[ファイル]を選択します。
- [出力指定]パネルで次の情報を指定します。
ファイルの種類 – オプションは "Analytics テーブル" のみです。結果を新しい Analytics テーブルに保存するか、または既存の Analytics テーブルに追加します。
名前 – [名前]テキスト ボックスにテーブル名を入力します。もしくは、[名前]ボタンをクリックして、[保存]または[ファイルを保存する名前]ダイアログ ボックスでテーブル名を入力するか、既存のテーブルに上書きまたは追加する場合はそのテーブルを選択します。Analytics によってテーブル名があらかじめ設定されている場合は、その設定されている名前を受け入れることも、あるいは変更することもできます。
また、絶対ファイル パスや相対ファイル パスを指定したり、別のフォルダーへ移動したり、プロジェクトの場所以外の場所にテーブルを保存したり、その場所にあるテーブルに追加したりすることもできます。たとえば、
C:\Results\No_duplicates.fil または Results\No_duplicates.fil と指定します。
ローカル – サーバー テーブルに接続している場合のみ有効になります。プロジェクトと同じ場所に出力テーブルを保存する、パスを指定する、または別のローカル フォルダーへ移動する場合は、[ローカル]を選択します。Analytics サーバーの Prefix フォルダーに出力テーブルを保存する場合は、[ローカル]を選択解除されたままにしておきます。
メモ
出力結果が Analytics Exchange のサーバー テーブルの分析や処理から生成される場合は、[ローカル]を選択します。[ローカル]設定は、結果テーブルを AX Server へインポートするために使用することはできません。
処理の範囲を指定する
- [詳細]タブをクリックします。
-
[適用範囲] パネルで、適切なオプションを選択します。
- すべて
- 先頭
- 次へ
- While
詳しく表示
適用範囲オプション 詳細 すべて (デフォルト) ビュー内のすべてのレコードを処理することを指定します。 先頭 テキストボックスに数を入力します。ビュー内の先頭レコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。 次へ テキストボックスに数を入力します。ビュー内の現在選択したレコードから処理が開始され、指定した件数のレコードのみが処理対象とされます。行内のデータではなく、ビュー内の左端列で実際のレコード番号が選択されている必要があります。 While WHILE ステートメントを使用して、特定の条件または条件のセットに基づいてビュー内のレコードの処理を制限します。
[While] テキストボックスに条件を入力するか、または [While] ボタンをクリックし、式ビルダーを利用して WHILE ステートメントを作成します。
WHILE ステートメントでは、指定した条件が true と評価される間のみ、ビュー内のレコードを処理することができます。条件が false と評価されるとすぐに処理が終了し、それ以上レコードは判断されません。
While オプションは、"すべて"、"先頭"、または "次" オプションと組み合わせて使用することができます。1 つの制限に達するとすぐに、レコードの処理が停止します。
メモ
[先頭] または [次] オプションは、テーブル内のレコードの物理的な順序またはインデックス付けされた順序のいずれかを参照します。[先頭] または [次] では、テーブル ビューに適用されたフィルタリングまたはクイック ソートは無視されます。ただし、分析操作の出力結果ではすべてのフィルターを考慮します。
ビューでクイック ソートが実行されている場合、"次" は "先頭" のように動作します。
設定の最終処理と結果の出力
-
処理の完了時に、出力テーブルを自動的に開くようにするには、[出力テーブルの使用]をオンにします。
- 出力テーブルを既存の Analytics テーブルの最後に追加する場合は、次のいずれかを実行します。
出力結果と既存のテーブルの構造が同じであることが確実な場合は、[既存のファイルに追加]を選択します。
出力結果と既存のテーブルのレコード長を Analytics に比較させたい場合は、[既存のファイルに追加する]を選択解除されたままにしておきます。レコード長が同一でなければ、データ構造は同じではなく、追加は正しく動作しません。
メモ
出力結果と既存のテーブルの構造が同一であるかどうかが不確かな場合は、[既存のファイルに追加する]を選択解除されたままにしておくことをお勧めします。追加およびデータ構造の詳細については、既存テーブルへの出力結果の追加を参照してください。
- [OK]をクリックします。
- 上書きを確認するメッセージが表示されたら、適切なオプションを選択します。
[最後に追加]オプションが表示されることを期待していたのに表示されない場合は、[いいえ]をクリックして操作をキャンセルし、既存テーブルへの出力結果の追加を参照してください。