コンセプト情報
曖昧一致を使用して、2 つの Analytics テーブルのフィールドを組み合わせて 1 つの新しい Analytics テーブルにします。
メモ
単一の文字フィールドでほぼ同一の値(あいまい重複)を検出するには、FUZZYDUP コマンドを参照してください。
完全に一致するキー フィールド値を使用してテーブルを結合するには、JOIN コマンドを参照してください。
構文
FUZZYJOIN {DICE PERCENT 割合 NGRAM n-gram 長|LEVDISTANCE DISTANCE 値} PKEY 主キー フィールド SKEY 副キー フィールド {FIELDS 主キー フィールド|FIELDS ALL <EXCLUDE 主フィールド <...n>>} <WITH 副フィールド|WITH ALL <EXCLUDE 副フィールド <...n>>> <IF テスト> <OPEN> TO テーブル名 <FIRSTMATCH> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <APPEND>
メモ
サーバーのテーブルに対してローカルで FUZZYJOIN コマンドを実行することはできません。
FUZZYJOIN コマンドはその全体を指定する必要があります。簡略化することはできません。
パラメーター
名前 | 説明 |
---|---|
DICE PERCENT 範囲 NGRAM n-gram 長 | LEVDISTANCE DISTANCE 値 |
使用するあいまい一致アルゴリズム DICE ダイス係数アルゴリズムを使用します
LEVDISTANCE レーベンシュタイン距離アルゴリズムを使用します
|
PKEY 主キー フィールド |
主テーブルの文字キー フィールドまたは式。 主キー フィールドは 1 つだけ指定できます。 |
SKEY 副キーフィールド |
副テーブルの文字キー フィールドまたは式。 副キー フィールドは 1 つだけ指定できます。 |
FIELDS 主フィールド | FIELDS ALL |
結合先の出力テーブルに含める、主テーブル内のフィールドまたは式。
メモ 結合テーブルに含める場合は、主キー フィールドを明示的に指定する必要があります。FIELDS ALL を指定しても含まれます。 |
EXCLUDE 主フィールド 省略可能 |
FIELDS ALL を使用して、曖昧結合を実行するときにのみ有効です。 コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、ALL キーワードを微調整できます。 EXCLUDE は、FIELDS ALL の直後、または 1 つ以上の関連テーブルのフィールドを含める場合は ALL キーワードの最後の出現の直後に続く必要があります。例: FIELDS ALL EXCLUDE field_1 field_2 FIELDS ALL 関連テーブル名.ALL EXCLUDE field_1 field_2 |
WITH 副フィールド | WITH ALL 省略可能 |
結合先の出力テーブルに含める、副テーブル内のフィールドまたは式。
メモ 結合テーブルに含める場合は、副キー フィールドを明示的に指定する必要があります。WITH ALL を指定すると含まれます。 |
EXCLUDE 副フィールド 省略可能 |
WITH ALL を使用して、曖昧結合を実行するときにのみ有効です。 コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、WITH ALL を微調整できます。 EXCLUDE は WITH ALL の直後に置く必要があります。例: WITH ALL EXCLUDE field_1 field_2 |
IF テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。コマンドは、その条件を満たすレコードに対してのみ実行されます。 メモ IF パラメーターは、任意の範囲パラメーター(WHILE、FIRST、NEXT)が適用された後に、テーブルに残るレコードに対してのみ評価されます。 メモ IF 条件は、主テーブル、副テーブル、または両方を参照できます。 |
OPEN 省略可能 |
コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。 |
TO テーブル名 |
コマンドの結果を送信する場所:
|
FIRSTMATCH 省略可能 |
各主キー値が、最初に発生した副キー一致にのみ結合されることを指定します。 最初の発生が完全一致であった場合は、後続の主キー値のあいまい一致は、結合された出力テーブルに含まれません。 FIRSTMATCH を省略する場合、FUZZYJOIN のデフォルト動作では、各主キー値をすべての副キー一致に結合します。 FIRSTMATCH は、完全一致またはあいまい一致の一致が 2 つのテーブル間に存在するかどうかを確認し、すべての一致を特定するために必要な処理時間を減らしたい場合にのみ役立ちます。 各主キー値に対する一致が副テーブルで多くても 1 つだけであることが確実な場合は、FIRSTMATCH を使用することもできます。 |
WHILE テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。 メモ WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。 |
FIRST range | NEXT range 省略可能 |
処理するレコード数:
範囲は処理するレコード数を指定します。 FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。 |
APPEND 省略可能 |
コマンドの出力を既存ファイルに上書きしないで、そのファイルの末尾に追加します。 メモ コマンドの出力と既存のファイルの構造が同一であるようにする必要があります。
出力は、既存ファイルとの間でファイル構造が違っている場合でも、Analytics によって既存ファイルに追加されます。出力と既存のファイルの構造が一致しない場合は、データが混在、不足、不正確になります。 |
ISOLOCALE ロケールコード 省略可能 |
メモ Analytics の Unicode 版にのみ適用されます。 システム ロケールは「言語-国」の形式で入力します。たとえば、カナダ フランス語はコード「fr_ca」を入力します。 次のコードを使用します。
ISOLOCALE を使用しない場合は、デフォルト システム ロケールが使用されます。 |
例
あいまい一致を使用して、業者である可能性がある従業員を検索するための方法として、2 つのテーブルを結合する
次の例は、共通キー フィールドとして住所(Address および Vendor_Street フィールド)を使用し、Empmast および Vendor テーブルを結合します。
FUZZYJOIN コマンドは、完全一致またはあいまい一致の主および副レコードを含む新しいテーブルを作成します。結果は、同一の住所または類似した住所の従業員と業者のリストです。
FUZZYJOIN とダイス係数アルゴリズム
OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN DICE PERCENT 0.8000 NGRAM 2 PKEY Address SKEY Vendor_Street FIELDS Employee_Number First_Name Last_Name Address WITH Vendor_Number Vendor_Name Vendor_Street OPEN TO "Employee_Vendor_Match"
FUZZYJOIN とレーベンシュタイン距離アルゴリズム
OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Address SKEY Vendor_Street FIELDS Employee_Number First_Name Last_Name Address WITH Vendor_Number Vendor_Name Vendor_Street OPEN TO "Employee_Vendor_Match"
すべてのフィールドを含める
このバージョンの FUZZYJOIN コマンドは、主テーブルと副テーブルのすべてのフィールドを結合された出力テーブルに含めます。
OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Address SKEY Vendor_Street FIELDS ALL WITH ALL OPEN TO "Employee_Vendor_Match"
曖昧一致の効果の改善
次の例では、SORTWORDS( ) 関数を使用して、Address フィールドと Vendor_Street フィールド間の曖昧一致の効果を高めます。UPPER( ) 関数を使用すると、キー フィールド値の要素の並べ替えに大文字と小文字が影響しないことを保証します。
OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY SORTWORDS(UPPER(Address)) SKEY SORTWORDS(UPPER(Vendor_Street)) FIELDS Employee_Number First_Name Last_Name Address WITH Vendor_Number Vendor_Name Vendor_Street OPEN TO "Employee_Vendor_Match"
備考
このコマンドの動作の詳細については、曖昧結合を参照してください。
大文字と小文字の区別
FUZZYJOIN コマンドは、使用するあいまい一致アルゴリズムに関係なく、大文字と小文字を区別しません。このため、"SMITH" は "smith" と同じです。
先頭と末尾の空白
FUZZYJOIN コマンドは、使用するあいまい一致アルゴリズムに関係なく、フィールドの先頭と末尾の空白を自動的に取り除きます。主および副キー フィールドを指定するときに、TRIM( ) または ALLTRIM( ) 関数を使用する必要はありません。
FUZZYJOIN の効果の改善
次の 3 つの手法は FUZZYJOIN コマンドの効果を大幅に高めることができます。
- 主キーおよび副キー フィールド値の個別の要素を並べ替える
- 主キーおよび副キー フィールド値から汎用要素を削除する
- 主キーおよび副キーフィールド値を調整する
これらの手法では、より厳密な曖昧設定を使用して、同じ曖昧一致を取得しながら、誤検出一致の数を減らすことができます。これらの手法は別々に使用するか組み合わせて使用できます。
キー フィールド値の個別の要素を並べ替える
SORTWORDS( ) 関数では、主キー フィールド値と副キー フィールド値の個別の要素を連続する順序に並べ替えることで、FUZZYJOIN コマンドの効果を改善することができます。
アドレスの構成要素などの要素を並べ替えると、同じ情報を含む、形式が異なり、相互により密接に類似したキー フィールド値を作成できます。より密接な類似性により、キー フィールド値が相互の曖昧一致として選択される確率が上がります。
詳細については、SORTWORDS( ) 関数を参照してください。
SORTWORDS( ) の概要を説明する動画については、「Fuzzy Matching Using SORTWORDS()」(英語のみ)をご覧ください。
メモ
キー フィールド値の要素の並べ替えは、レーベンシュタイン距離アルゴリズムを使用した曖昧一致に最適です。
ダイ係数アルゴリズムを使用しているときには、要素の並べ替えが有効な場合とそうでない場合があります。本番設定でダイ係数アルゴリズムと SORTWORDS( ) を使用するかどうかを決定する前に、サンプル データのセットをテストしてください。
注意
FUZZYJOIN コマンドと SORTWORDS( ) を使用する場合は、SORTWORDS( ) を比較対象の両方の文字列または両方のフィールドに適用する必要があります。
キー フィールド値から汎用要素を削除する
OMIT( ) 関数は、主キー フィールド値および副キー フィールド値から "Corporation" や "Inc."、カンマ、ピリオド、アンパサンド(&)文字などの一般的要素を除去することによって、FUZZYJOIN コマンドの効果を高めることができます。
一般的要素と句読点の除去により、曖昧一致は、意味のある違いが発生する可能性のあるキー フィールド値の部分だけに集中されます。
詳細については、OMIT( ) 関数を参照してください。
キー フィールド値を一致させる
REPLACE( ) または REGEXREPLACE( ) 関数は、主キー フィールド値と副キー フィールド値の同じ要素の変異形を一致させることで、FUZZYJOIN コマンドの効果を改善できます。たとえば、"Street"、"St."、"St" を一致させ、単一の値 "St" を使用できます。
要素を一致させると、同じ情報を含む、形式が異なり、相互により密接に類似したキー フィールド値を作成できます。より密接な類似性により、キー フィールド値が相互の曖昧一致として選択される確率が上がります。
詳細については、REPLACE( ) 関数(簡単な置換)およびREGEXREPLACE( ) 関数(複雑な置換)を参照してください。