Alteryxで文字列から必要な部分だけを抜き出す

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

今回は、alteryxの基本的な機能として、文字列操作に関するものを見ていきます。

やること

sample workflowにある、Data Problem Flexibilityを見ていきます。 このworkflowは

Help > Sample workflows > Basic > Data Problem Flexibility

から開くことができます。 このworkflowでは、やっていることは文字列の先頭2桁の数字部分を取り出すものになっています。 おなじ操作を実現するのに9種類のやり方で実現しているものになっています。 実現していることは自体は簡単なものですが、alteryxでできることの雰囲気をつかむのにはちょうどいいsampleかと思います。

スクリーンショット 2017-06-02 13.13.07

入力データは以下のようになっています。

スクリーンショット 2017-06-02 13.22.02

ここからITEM列の先頭2桁の数字を取り出し、以下のような出力にするのが目的となります。

スクリーンショット 2017-06-02 13.23.21

やり方を見ていく

では、左側のSolution #1から順に見ていきましょう

まず1つ目はRegEx Toolを使って正規表現で抜き出す方法です。

スクリーンショット 2017-06-02 13.28.31

スクリーンショット 2017-06-02 13.28.41

正規表現で数字が2つ並んでいる部分を抜き出しているのがわかるかと思います。

2つ目もほぼ同様の手法になります。

スクリーンショット 2017-06-02 13.32.00

スクリーンショット 2017-06-02 13.32.20

正規表現の部分で「数字が2つ並んでいる」を桁数で表現したものになっています。

3つ目は、Formula Toolを利用したものになります。

スクリーンショット 2017-06-02 13.34.45

スクリーンショット 2017-06-02 13.34.54

数字部分が先頭2文字であることを利用して、Formula toolのLEFT関数で先頭2文字を取得しています。

4つ目もFormula Toolを利用したものになっています。

スクリーンショット 2017-06-02 13.38.29

スクリーンショット 2017-06-02 13.38.37

考え方は同じですが、こちらはSUBSTRING関数で0文字目から2文字目までを取り出しています。

5つ目では再びRegEx Toolを利用しています。

スクリーンショット 2017-06-02 13.40.07

スクリーンショット 2017-06-02 13.40.33

1つ目、2つ目とは異なり、欲しい部分を抜き出すのではなく、空白文字で区切ることで必要な部分を取得しています。

6つ目は、Formula Toolの関数で正規表現を利用した例になります。

スクリーンショット 2017-06-02 13.42.19

スクリーンショット 2017-06-02 13.42.30

REGEX_REPLACE関数を利用して、数値の部分のみを抜き出しています。

7つ目はやや特殊なやり方をしています。

スクリーンショット 2017-06-02 14.16.44

スクリーンショット 2017-06-02 14.16.54

一見するとITEM列をそのまま抜き出しているだけのように見えます。 これは右下の「Size」の部分がキーポイントで、文字列のサイズを2にすることで結果的に3文字目以降が捨てられ、先頭の2文字のみが残るといった仕組みになっています。

8つ目は、これまでとは異なり、Text to Columns Toolというものが登場します。

スクリーンショット 2017-06-02 14.19.22

スクリーンショット 2017-06-02 14.19.31

Text to ColumnsツールはCSVなどの区切り文字を使ってデータを分けているような列を分割して別々な列にするためのツールです。 今回は、区切り文字に空白文字を指定することで文字列の分割を行っています。

最後は、再びFormula Toolを利用したものになります。

スクリーンショット 2017-06-02 14.23.08

スクリーンショット 2017-06-02 14.23.16

こちらはTONUMBER関数を利用することで文字列を数値に変換しています。 数値に変換可能な部分はいずれのレコードも先頭2文字までなので、結果的にその部分が取り出されるというかたちになっています。

どれを使うのが一番いいの?

さて、同じことをするのにこれだけいろいろな方法があるわけですが、どれを使うのがいいのでしょうか? その答えは、「一概にこれがベストとは言えず、その時の状況による」ということになります。

今回の場合ですと、

  • 取り出したい数値が必ず先頭にある
  • 取り出したい数値は2桁でゼロ埋めされている
  • 数値とそれ以外の部分は空白文字で区切られている
  • 取り出した部分以外には数値は含まれない

といった、データが含む様々な性質を利用して実現できています。 実際のデータでは、必ずしもこれらが当てはまるとは言えず、その時々に応じて、データにどのような性質があって、そこから目的の部分のみを鳥だすにはどうすればいいかを都度考えることになります。

そのため、今回の例のように様々なやり方を確認しておくと、実際のデータを相手にした時にどの方法が使えそうかを考えやすくなるでしょう。

終わりに

今回は、sampleのworkflowから、様々な方法で文字列から必要な部分のみを抜き出す方法を見ていきました。 やりたいこととしては、ひじょうに簡単な内容となっていますが、実際の場面でも今回のようなことをしたくなる場面は多々あります。 文字列を扱う場合、アンケートの自由記述などのように割と自由にかけてしまうが故にそこから必要な情報のみを抜き出すのに頭を悩ませる場面も多いかと思いますが、都度柔軟に対応できるようにはこのような例を確認しておくといいかと思います。