FUZZYDUP コマンド

文字フィールドでほぼ同一の値(あいまい重複)を検出します。

メモ

曖昧一致を使用して、2 つの Analytics テーブルのフィールドを組み合わせて 1 つの新しい Analytics テーブルにする手順については、FUZZYJOIN コマンドを参照してください。

構文

FUZZYDUP ON キー フィールド <OTHER フィールド> LEVDISTANCE  <DIFFPCT 割合> <RESULTSIZE 割合> <EXACT> <IF テスト> TO テーブル名 <LOCAL> <OPEN>

パラメーター

名前 説明
ON キーフィールド あいまい重複をテストする文字フィールドまたは式。
OTHER フィールド

省略可能

出力に含めるフィールドや式の一覧。

LEVDISTANCE

2 つの文字列があいまい重複と認定されて結果に含まれるために、それらの文字列間で許容される最大のレーベンシュタイン距離。

LEVDISTANCE の値は 1 未満にすることや、10 を超えることはできません。LEVDISTANCE の値を大きくすると、あいまい度が高い値(相互の関連性が低い値)が含まれるため、結果の件数が多くなります。

詳細については、FUZZYDUP 動作を参照してください。

DIFFPCT 割合

省略可能

「相違のパーセント」、つまり、文字列のうち異なっていてもよい割合を制限するしきい値。

あいまい重複の可能性のあるペアが結果に含まれるためには、そのペアに対して実行される Analytics 内部での計算によって出力されるパーセントは、DIFFPCT の値以下である必要があります。DIFFPCT の値は 1 未満にすることや、99 を超えることはできません。

DIFFPCT が省略された場合、しきい値はオフになり、FUZZYDUP コマンドの処理時に相違のパーセントは考慮されません。

詳細については、FUZZYDUP 動作を参照してください。

RESULTSIZE 割合

省略可能

キー フィールドのレコード数の割合として、出力結果のセットの最大サイズ。

たとえば、50,000 個の値を持つキー フィールドの場合、RESULTSIZE に 3 を設定すると、結果のあいまい重複数が 1500 を超えた場合(50,000 x 0.03)に処理が終了します。処理が終了した場合、出力テーブルは作成されません。

RESULTSIZE の値は 1 未満にすることや、1000 パーセントを超えることはできません。1000% の上限は多対多一致の本質に対応するためのものです。多対多一致では、元の検査データ セットより大きい結果が生成されるかもしれません。

RESULTSIZE が省略された場合、しきい値はオフになり、FUZZYDUP コマンドの処理時に結果のサイズは考慮されません。

注意

RESULTSIZE を省略すると、過度に大きな結果のセットが生成され、処理時間が非常に長くなったり、使用可能なメモリの超過を引き起こして、処理が終了したりする可能性があります。結果が管理可能なサイズになると確信している場合にのみ、RESULTSIZE を省略してください。

EXACT

省略可能

あいまい重複だけでなく完全な重複も結果に含まれます。

IF テスト

省略可能

各レコードを処理するために真である必要がある条件式。コマンドは、その条件を満たすレコードに対してのみ実行されます。

メモ

IF パラメーターは、任意の範囲パラメーター(WHILE、FIRST、NEXT)が適用された後に、テーブルに残るレコードに対してのみ評価されます。

TO テーブル名

コマンドの結果を送信する場所:

  • テーブル名は、結果の保存先となる Analytics テーブルのことです。

    テーブル名には、ファイル拡張子 .FIL を付けた文字列を引用符で囲んで指定する必要があります。例:TO "Output.FIL"

    デフォルトでは、テーブル データ ファイル(.fil)は、Analytics プロジェクトが入っているフォルダーに保存されます。

    既存の異なるフォルダーにデータ ファイルを保存するには、絶対または相対ファイル パスを指定します。

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    メモ

    テーブル名は 64 文字の英数字(.FIL 拡張子を含まない)に制限されています。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。

LOCAL

省略可能

Analytics プロジェクトと同じ場所に出力ファイルを保存します。

メモ

Analytics テーブルである出力ファイルを含むサーバー テーブルに対してコマンドを実行するときにのみ適用されます。

OPEN

省略可能

コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。

Analytics の出力変数

名前 含む
GAPDUPn

コマンドによって確認されたギャップ、重複、またはあいまい重複グループの合計数。

あいまい重複の姓フィールドのテスト

姓フィールドであいまい重複を検査(Last_Name フィールドは、ACL DATA\Sample Data Files\Metaphor_Employee_Data.ACLEmployee_List テーブルにあります)します。結果は新しい Analytics テーブルに出力されます。

  • 検査フィールドに加え、他のフィールドも結果に含まれます。
  • 許容される最大のレーベンシュタイン距離は 1 です。
  • 異なってもよい文字列の割合は 50% に制限されています。
  • 結果のサイズは、検査フィールドのサイズの 20% に制限されています。
  • あいまい重複に加え、完全な重複も含まれます。
FUZZYDUP ON Last_Name OTHER First_Name EmpNo LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Fuzzy_Last_Name" OPEN

備考

メモ

このコマンドの動作の詳細については、Analytics のヘルプを参照してください。

機能の仕組み

FUZZYDUP コマンドは、ほぼ同一の値(あいまい重複)の検出や、手作業で入力されたデータで一貫性のないつづりを見つけます。

ISFUZZYDUP( ) 関数は、単一の文字値に対するあいまい重複の完全な一覧を識別します。それとは異なり、FUZZYDUP コマンドでは、フィールド内のすべてのあいまい重複を識別し、それらをグループにまとめて、完全でない結果を出力します。

「網羅的でない」とは

「完全でない」とは、結果のあいまい重複の個々のグループには、そのグループ所有者の指定された相違の度合いの範囲内にある、検査フィールドのすべてのあいまい重複が含まれない可能性があることを意味します。ただし、グループ所有者が検査フィールド内の別の値のあいまい重複である場合は、2 つの値が結果のどこかのグループに一緒に現れます。

分析において、検査フィールド内の特定の値に対するあいまい重複の完全な一覧を生成することが重要な場合は、この目的のために ISFUZZYDUP( ) 関数を使用することができます。

FUZZYDUP 動作

FUZZYDUP コマンドには、2 つのパラメーターがあります。これらを指定して、あいまい重複間の相違の度合いや結果のサイズを制御することができます。

  • LEVDISTANCE
  • DIFFPCT

これらの 2 つのパラメーターの設定の組み合わせをいろいろ試してみて、特定のデータ セットでどれが最も良い状態で機能するかを調べる必要があるかもしれません。

LEVDISTANCE (レーベンシュタイン距離)

データの処理中に、FUZZYDUP コマンドは、検査フィールドで評価される文字列のペアごとにレーベンシュタイン距離を計算し、相違のパーセントを求めます。レーベンシュタイン距離は、ある文字列を別の文字列にするために必要な、1 文字の編集の最小回数を示す値です。詳細については、LEVDIST( ) 関数を参照してください。

DIFFPCT (相違のパーセント)

相違のパーセントは、評価される 2 つの文字列の長さが異なるとき、それらのうち短い方に対する割合であり、2 つの文字列間のレーベンシュタイン距離を使用する、次のような Analytics 内部での計算の結果です。

レーベンシュタイン距離 / 短い文字列内の文字数 × 100 = 相違のパーセント

詳しい情報

あいまい重複のさまざまな設定、結果サイズの制御、およびあいまい重複のグループに関する詳細については、『あいまい重複の概要』を参照してください。

大文字と小文字の区別

FUZZYDUPコマンドでは大文字と小文字が区別されないため、"SMITH" は "smith" と同じであると判断されます。

最後の空白は自動的に削除されます

FUZZYDUP コマンドは、キーフィールド内の末尾にあるスペースを自動的に除去するため、キー フィールドの単一フィールドを指定するときに TRIM( ) または ALLTRIM( ) 関数を使う必要はありません。

キー フィールドのフィールドを連結する場合は、以下のように、ALLTRIM() を使用してください。

FUZZYDUP の効果の改善

フィールドの連結

2 つ以上の検査フィールドを連結すると、検査値の一意性の度合いが増すことによって、FUZZYDUP コマンドの有効性を高めることができます。

例:

FUZZYDUP ON ALLTRIM(First_Name)+ALLTRIM(Last_Name) OTHER First_Name Last_Name EmpNo LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Fuzzy_First_Name_Last_Name" OPEN

OMIT( ) 関数

OMIT( ) 関数もまた、フィールド値から "Corporation" や "Inc." などの総称要素を除去することによって、コマンドの有効性を高めることができます。

総称要素の除去により、FUZZYDUP の文字列比較は、意味のある違いが発生する可能性のある文字列の部分だけに集中されます。

詳細については、OMIT( ) 関数を参照してください。

その他の文字列比較方法

  • DICECOEFFICIENT( ) 関数は、文字または文字ブロックの相対位置を重視しない、または完全に無視して文字列を比較するための方法を提供します。
  • SOUNDSLIKE( ) 関数および SOUNDEX( ) 関数は、正字法の比較(綴り)ではなく、発音記号の比較(発音)に基づいて文字列を比較するための方法を提供します。
ACL のスクリプト作成ガイド 14.1