コンセプト情報

曖昧結合

曖昧一致を使用して、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 ダイス係数アルゴリズムを使用します

  • PERCENT 割合 あいまい一致と見なされるための、2 つの文字列の許容可能な最低ダイス

    係数0.0000 ~ 1.0000 の小数を指定します(例:0.7500)。小数点 4 桁の最大値を使用します。

    値を小さくすると、あいまい度が高い値(相互の関連性が低い文字列)が含まれるため、一致の件数が多くなります。

  • NGRAM n-gram 長 使用する n-gram の長さ

    1 以上の整数を指定します。

    n-gram の長さを大きくすると、2 つ文字列の間の類似度の基準が厳しくなります。

    N-gram は、ダイス係数計算の構成要素であり、比較対象となる 2 つの文字列にとって、構成要素であると同時に重なり合う、部分文字列(文字ブロック)です。

    メモ

    DICE を指定するときには、FUZZYJOIN コマンドは、IF 文で DICECOEFFICIENT( ) 関数を使用し、キー フィールド値を条件付きで結合します。関数の詳細については、DICECOEFFICIENT( ) 関数を参照してください。

LEVDISTANCE レーベンシュタイン距離アルゴリズムを使用します

  • DISTANCE 曖昧一致であると見なされるための、2 つの文字列間の許容可能な最低レーベンシュタイン距離

    1 以上の整数で指定します。

    値を大きくすると、曖昧度が高い値(相互の関連性が低い文字列)が含まれるため、一致の件数が多くなります。

    メモ

    LEVDISTANCE を指定するときには、FUZZYJOIN コマンドは、IF 文で LEVDIST( ) 関数を使用し、キー フィールド値を条件付きで結合します。関数の詳細については、LEVDIST( ) 関数を参照してください。

    関数とは異なり、FUZZYJOIN コマンドのレーベンシュタイン距離アルゴリズムは、自動的に先頭と末尾の空白を取り除きます。大文字と小文字は区別されません。

PKEY 主キー フィールド

主テーブルの文字キー フィールドまたは式。

主キー フィールドは 1 つだけ指定できます。

SKEY 副キーフィールド

副テーブルの文字キー フィールドまたは式。

副キー フィールドは 1 つだけ指定できます。

FIELDS 主フィールド | FIELDS ALL

結合先の出力テーブルに含める、主テーブル内のフィールドまたは式。

  • 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 副フィールド 指定されたフィールドが含まれます

    フィールドはリストする順序で含まれます。

  • 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 テーブル名

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

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

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

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

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

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

    メモ

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

FIRSTMATCH

省略可能

各主キー値が、最初に発生した副キー一致にのみ結合されることを指定します。

最初の発生が完全一致であった場合は、後続の主キー値のあいまい一致は、結合された出力テーブルに含まれません。

FIRSTMATCH を省略する場合、FUZZYJOIN のデフォルト動作では、各主キー値をすべての副キー一致に結合します。

FIRSTMATCH は、完全一致またはあいまい一致の一致が 2 つのテーブル間に存在するかどうかを確認し、すべての一致を特定するために必要な処理時間を減らしたい場合にのみ役立ちます。

各主キー値に対する一致が副テーブルで多くても 1 つだけであることが確実な場合は、FIRSTMATCH を使用することもできます。

WHILE テスト

省略可能

各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。

メモ

WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。

FIRST range | NEXT range

省略可能

処理するレコード数:

  • FIRST 指定されたレコード数に達するまで、最初のレコードから処理を開始します
  • NEXT 指定されたレコード数に達するまで、現在選択されているレコードから処理を開始します

範囲は処理するレコード数を指定します。

FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。

APPEND

省略可能

コマンドの出力を既存ファイルに上書きしないで、そのファイルの末尾に追加します。

メモ

コマンドの出力と既存のファイルの構造が同一であるようにする必要があります。

  • 同じフィールド
  • 同じフィールド順序
  • 一致するフィールドが同じ長さ
  • 一致するフィールドが同じデータ型

出力は、既存ファイルとの間でファイル構造が違っている場合でも、Analytics によって既存ファイルに追加されます。出力と既存のファイルの構造が一致しない場合は、データが混在、不足、不正確になります。

ISOLOCALE ロケールコード

省略可能

メモ

Analytics の Unicode 版にのみ適用されます。

システム ロケールは「言語-」の形式で入力します。たとえば、カナダ フランス語はコード「fr_ca」を入力します。

次のコードを使用します。

  • 言語 ISO 639 標準言語コード
  • ISO 3166 標準国コード

    国コードを指定しない場合は、言語のデフォルト国が使用されます。

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( ) 関数(複雑な置換)を参照してください。