Alteryxの検索置換ツールの挙動についてご紹介します
Alteryxの検索置換ツールですが、どのような挙動で動いているのか気になったので少し調べてみました。
検索置換ツールで、
- 検索する値のフィールド内に同じ名前のレコードが複数ある場合
- 検索する値のフィールド内に複数の置換候補レコードがある場合
どうなるのでしょうか?
わかりやすくするために具体的な例をあげたいと思います。
まず、検索元のフィールドは以下のようにします(検索置換ツールのF入力へ入るデータ)。
このデータテーブルの「カテゴリ」という項目に対して、データの置換検索を行いたいと思います。検索置換ツールの「R入力」へ入れるデータは以下のようになります。
1の「検索する値のフィールド内に同じ名前のレコードが複数ある場合」では、以下のようなテーブルを使って置換を行います。つまり、検索する値が複数レコード同じになっています(「ビール」が複数レコードあるということです)。この時、どちらのレコードが反映されるか?
2の「検索する値のフィールド内に複数の置換候補レコードがある場合」では、以下のようなテーブルを使って置換を行います。
こちらは、置換先のフィールドに「日本酒」がある場合、「日本」のレコードがあたるのか「日本酒」のレコードがあたるのか?というところがポイントです。
※こちらのパターンは、前提としてツールの「検索」の設定の部分が「フィールドの任意の部分」ということになります(フィールド全体の場合は必ず完全一致のため結果は一つです)。
1.検索する値のフィールド内に同じ名前のレコードが複数ある場合
検索置換ツールのF入力
に対して、R入力
を以下のような設定で実行してみます。
予測される結果は、「ビール」が「Beer」もしくは「麦酒」になるはずです。
結果は以下の通りです。「ビール」が「Beer」になりました。
ちなみに、R入力側を並べ替えて実行してみました。
結果は以下の通り。
今度は「ビール」に「Beer」ではなく「麦酒」で置換されました。
このことから導き出せるのは、下のレコードからマッチングをかけている、ということでしょうか。
結論:検索置換ツールのR入力側の置換候補は、下から優先される
2.検索する値のフィールド内に複数の置換候補レコードがある場合
次、検索置換ツールのF入力は同様です。
に対して、R入力は、
です。この場合、下から優先的に検索されると「日本酒」は「日本」のレコードが先に検索され「Japan」が入るはずです。
結果は以下の通り。
こちらは想定どおりとならず、「日本酒」のレコードの「Sake」で置換されました。
では、逆の順番にしてみましょう。R入力を以下の通りにします。
結果はやはり同じでした(日本酒のレコードで置換される)。
このことから言えるのは紐付けは順番がすべてではなく、最も一致度が高いものが優先的に置換対象となる、ということです。内部的な動作は結果から類推するくらいしかできませんが、一致度が高いものを優先的に置換対象としていると考えて良いかと思います。
ちなみに、以下のようなテーブルで再検証すると、1,2の結果の組み合わせとなります(最も一致度が高いものの中で下からマッチングする)。
より一致度が高いものを候補とし、下から検索する、ということになります。
結論:最も一致度が高いものがマッチングされる
まとめ
Alteryxの検索置換ツール(Find Replace Tool)ですが、以下のような挙動となります。
- 一致度の高いものからマッチングする
- 同じワードの検索候補が複数あれば下からマッチングする
ここに記載していることが全てではないと思いますので、実際にご利用の環境で最終的にどのような挙動をしているかは確認してから使うようにお願いいたします。
サンプルワークフローダウンロード
※Alteryx 2019.2.7.63499時点の情報です