Alteryxでデータから固定の文字列とパラメータを組み合わせた文字列を抜き出す
こんにちは、スズです。
今回はAlteryxでデータから固定の文字列とパラメータを組み合わせた文字列を抜き出す方法をご紹介します。例えば、00_category1_20210707
というデータがあった際にcategory1
を抜き出します。このcategory1はcategoryの部分が固定になりますが、そのあとに続く数字はレコードによって異なるパラメータとします。このように、「固定の文字列」と「パラメータ」をセットとして抜き出してみます。
正規表現ツールを使う
固定の文字列がある場合は、固定の文字列と正規表現を組み合わせることで簡単に抜き出すことができます。正規表現ツールを使った例をご紹介します。
以下のデータの中から、category
とそれに続く数字の組み合わせを抜き出します。
正規表現ツールでは以下のとおり設定します。正規表現の設定欄にはcategory
のほか、数字部分について正規表現で表現します。数字を示す\d
と、数字の桁数が不特定なため*
を指定します。
- 正規表現: (category\d*)
- 出力方法: 解析
出力結果を確認してみると、目的の文字列が出力されています。
正規表現は慣れていないと一見ハードルが高いかと思いますが、固定の文字列がある場合はそのまま利用し、パラメータ部分だけ正規表現を利用すると使いやすいかと思います。
フォーミュラツールで関数を使う
次はフォーミュラツールで関数を使う方法をご紹介します。
Substring関数
Substring関数は文字列の開始位置と終了位置を指定して文字列を抜き出します。00_category1_20210707
を例にとると、Substring([Field1],3,9)
と指定することで、category1
を抜き出すことができます。
元のデータ:
フォーミュラツールの設定:
加工後のデータ:
開始位置と終了位置を指定しますので、抜き出したい文字列の長さや開始位置、終了位置が異なりますと、目的の文字列を抜き出すことができない場合があります。各レコードに対応させようとなると、If関数を使用してレコードの長さによって記述するSubstring関数を変更するなどの工夫が必要となります。
元のデータ:
フォーミュラツールの設定:
加工後のデータ:
Right関数とLeft関数
Right関数、Left関数を組み合わせて対象の文字列を抜き出すことも可能です。同じように以下のデータを例にして動作を見てみます。
Right関数でcategory
以降の文字列を抜き出します。抜き出す文字列の位置の指定が必要となりますが、Length関数とFindString関数で対応します。Length関数で文字列全体の長さを測定し、FindString関数でcategory
の位置を見つけ、文字列全体の長さ - categoryの位置
の結果を抜き出す文字列の位置として指定します。
Right([Field1], Length([Field1]) - FindString([Field1], "category"))
Right関数で加工したデータに対して、Left関数でcategory
の直後の文字より前を抜き出します。今回の例の場合は対象の文字はアンダーバーとなります。FindString関数で対象の文字の位置を検出して指定します。
Left([Right], FindString([Right], "_"))
処理した結果は以下の通りとなります。Right列はRight関数で加工した結果、Left列はLeft関数で加工した結果を表示しています。結果を分かりやすく見せるために列を分けていますが、同じ列に対して処理することも可能です。
また、1つの式としてまとめることも可能です。式をまとめるとぱっと見分かりにくくなる場合もあるため、今後のメンテナンスを考えて式を1つにまとめずに分けたままにしておくのもいいかと思います。
Left(Right([Field1], Length([Field1]) - FindString([Field1], "category")), FindString(Right([Field1], Length([Field1]) - FindString([Field1], "category")), "_"))
元のデータ:
フォーミュラツールの設定:
加工後のデータ:
さいごに
Alteryxでデータから固定の文字列とパラメータを組み合わせた文字列を抜き出す方法をご紹介しました。