Alteryxでデータから固定の文字列とパラメータを組み合わせた文字列を抜き出す

2021.07.07

こんにちは、スズです。

今回は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でデータから固定の文字列とパラメータを組み合わせた文字列を抜き出す方法をご紹介しました。