FUZZYJOIN コマンド

曖昧一致を使用して、2 つの Analytics テーブルのフィールドを組み合わせて 1 つの新しい Analytics テーブルにします。

メモ

単一の文字フィールドでほぼ同一の値(あいまい重複)を検出するには、FUZZYDUP コマンドを参照してください。

完全に一致するキー フィールド値を使用してテーブルを結合するときのさまざまなオプションについては、JOIN コマンドを参照してください。

構文

FUZZYJOIN {DICE PERCENT 割合 NGRAM n-gram 長|LEVDISTANCE DISTANCE } PKEY 主キー フィールド SKEY 副キー フィールド FIELDS 主フィールド|FIELDS ALL} <WITH 副フィールド|WITH ALL> <IF テスト> <OPEN> <FIRSTMATCH> TO テーブル名 <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

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

  • 主フィールド 指定した 1 つまたは複数のフィールドが含まれます。
  • ALL テーブルのすべてのフィールドを含めます

メモ

結合テーブルに含める場合は、主キー フィールドを明示的に指定する必要があります。ALL を指定すると含まれます。

WITH 副フィールド | WITH ALL

省略可能

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

  • 副フィールド 指定した 1 つまたは複数のフィールドが含まれます。
  • ALL テーブルのすべてのフィールドを含めます

メモ

結合テーブルに含める場合は、副キー フィールドを明示的に指定する必要があります。ALL を指定すると含まれます。

IF テスト

省略可能

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

メモ

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

メモ

IF 条件は、主テーブル、副テーブル、または両方を参照できます。

OPEN

省略可能

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

FIRSTMATCH

省略可能

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

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

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

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

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

メモ

FIRSTMATCH は、ACLスクリプト パラメーターとしてのみ使用できます。このオプションは、Analytics のユーザー インターフェイスでは使用できません。

TO テーブル名

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

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

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

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

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

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

    メモ

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

WHILE テスト

省略可能

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

メモ

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

FIRST 範囲 | NEXT 範囲

省略可能

処理するレコード数:

  • 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"

備考

メモ

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

大文字と小文字の区別

FUZZYJOIN コマンドは、使用するあいまい一致アルゴリズムに関係なく、大文字と小文字を区別しません。このため、"SMITH" は "smith" と同じです。

先頭と末尾の空白

FUZZYJOIN コマンドは、使用するあいまい一致アルゴリズムに関係なく、フィールドの先頭と末尾の空白を自動的に取り除きます。主および副キー フィールドを指定するときに、TRIM( ) または ALLTRIM( ) 関数を使用する必要はありません。

ACL のスクリプト作成ガイド 14.1