SORTWORDS( ) 関数

連続する順序で並べ替えられた個別の単語を含む文字列を返します。

構文

SORTWORDS(文字列)

パラメーター

名前 説明
文字列 文字

並べ替える単語を含む文字列または式。

「単語」とは、任意の文字、またはスペース区切りの文字のグループです。

  • 実際の単語または名前
  • 文字データ型を使用する数値
  • 略語や特定するプレフィックスなどの文字、数字、特殊文字のグループ

単語間の複数のスペースは自動的に 1 つのスペースに変換されます。先頭または末尾のスペースは自動的に切り取られます。

出力

文字。

基本的な例

リテラル文字の入力値

"1 2 A Z a z" を返します(非 Unicode Analytics)

SORTWORDS("Z a 2 z A 1")

"1 2 a A z Z" を返します(Unicode Analytics)

SORTWORDS("Z a 2 z A 1")

"1 2 A A Z Z" を返します

SORTWORDS(UPPER("Z a 2 z A 1"))

"CA, FL NY, TX," を返します

SORTWORDS("CA, TX, NY, FL")

"CA FL NY TX" を返します

SORTWORDS(OMIT("CA, TX, NY, FL", ","))

フィールドへの入力値

住所要素が連続する順序に並べ替えられた Vendor_Address フィールドのすべての値を返します。

SORTWORDS(Vendor_Address)

高度な例

住所要素を並べ替え、あいまい重複一致を改善する

Analytics で各種あいまい一致を実行するときには、SORTWORDS( ) をヘルパー関数として使用できます。

レーベンシュタイン距離に対する SORTWORDS( ) の効果

まず、形式が異なる 2 件の同じ住所でレーベンシュタイン距離を確認します。

SORTWORDS( ) 関数を使用しないと、返されるレーベンシュタイン距離は 22 です。そのような大きいレーベンシュタイン距離は、2 つの文字列が同じ住所ではないことを示唆しています。

LEVDIST("125 SW 39TH ST, Suite 100", "Suite 100, 125 SW 39TH ST")

では、SORTWORDS( ) 関数を追加します。返されるレーベンシュタイン距離は 2 となり、大幅に小さくなります。これは 2 つの文字列が同じ住所であることを示しています。

LEVDIST(SORTWORDS("125 SW 39TH ST, Suite 100"), SORTWORDS("Suite 100, 125 SW 39TH ST"))

「125 SW 39TH ST, Suite 100」に対するあいまい重複の抽出

次の例は、「125 SW 39TH ST, Suite 100」との指定したレーベンシュタイン距離内にあるすべての "Vendor_Address" フィールド値を抽出するフィルターを作成します。

SET FILTER TO LEVDIST(SORTWORDS(Vendor_Address), SORTWORDS("125 SW 39TH ST, Suite 100"), F) < 3
SET FILTER TO ISFUZZYDUP(SORTWORDS(Vendor_Address), SORTWORDS("125 SW 39TH ST, Suite 100"), 3, 99)

式のレーベンシュタイン距離(3)を増減させると、フィルターされた値の距離の度合いを調整することができます。

レーベンシュタイン距離の詳細については、LEVDIST( ) 関数を参照してください。

備考

概要のビデオ

この関数の概要を説明する動画については、「Fuzzy Matching Using SORTWORDS()」(英語のみ)をご覧ください。

SORTWORDS( ) で使用される並べ替え順序

SORTWORDS( ) 関数は、[並べ替え順序]オプション([ツール > オプション > テーブル])で指定された並べ順を使用します。デフォルトの並べ替え順序は次のとおりです。

詳細については、[並べ替え順]オプションとソート順序を参照してください。

Analytics のエディション

[並べ替え順]のデフォルト

関連付けられているソート順序

非 Unicode

システム デフォルト

(ASCII)

数字、大文字、小文字、小文字:

0, 1, 2... A, B, C... a, b, c...

たとえば、"Z" は "a" の前にソートされます。

Unicode

混合言語(UCA)

(Unicode 照合アルゴリズム)

数字、小文字と大文字の混合:

0, 1, 2... a, A, b, B, c, C...

たとえば、"a" は "Z" の前にソートされます。

大文字と小文字の区別

SORTWORDS( ) は大文字と小文字を区別します。ご使用の Analytics のエディション(非 Unicode または Unicode)によって、文字列の大文字と小文字が並べ替えに影響する場合があります。

大文字と小文字が並べ替えに影響しないようにしたい場合は、SORTWORDS( ) と一緒に UPPER( ) 関数を使用できます。

SORTWORDS(UPPER("文字列"))

SORTWORDS( ) は曖昧一致を改善できます

SORTWORDS( ) は、曖昧一致コマンドのほか、曖昧一致関数を使用するフィルターや条件の効果を高めることができます。

注意

曖昧一致コマンドまたは関数と SORTWORDS( ) を使用する場合は、SORTWORDS( ) を比較対象の両方の文字列または両方のフィールドに適用する必要があります。2 つの文字列またはフィールドのいずれかにのみ関数を適用すると、曖昧一致の結果が大幅に低下することがあります。

レーベンシュタイン距離アルゴリズム

レーベンシュタイン距離アルゴリズムに基づくコマンドと関数を使用するときには、SORTWORDS( ) が特に有効です。この関数は、2 つの文字列の同一または類似した要素が別の位置にあると、大きい相違値を返します。最初に要素を並べ替えると、レーベンシュタイン アルゴリズムによって返される相違値を大幅に減らすことができます。結果セットの誤検出が少なくなり、真の検出が多くなります。

ダイス係数アルゴリズム

ダイス係数アルゴリズムに基づくコマンドや関数を使用するときには、SORTWORDS( ) が有効な場合があります。ただし、効果の改善がいつでも得られるわけではありません。設計上、ダイス係数アルゴリズムにより、要素の位置の重要度が最小化されるため、レーベンシュタイン距離アルゴリズムよりも要素の並べ替えの影響が少なくなります。

データの性質によっては、SORTWORDS( ) によって、ダイス係数アルゴリズムが低いスコアを返し、実際には効果が低下する場合もあります。本番設定でダイ係数アルゴリズムと SORTWORDS( ) を使用するかどうかを決定する前に、サンプル データのセットをテストしてください。

もう一つの考慮事項は、ダイス係数の n-gram 長さが短くなると、SORTWORDS( ) を使用する利点がそれほど大きくならないということです。n-gram 長さを減らすと、ダイス係数アルゴリズムは要素の位置の重要度を大幅に最小化します。