Alteryxでデータを分割!パースしてみよう

Alteryxでデータを分割!パースしてみよう

『今日からはじめるAlteryx再入門』アドベントカレンダー06日目
Clock Icon2020.12.06

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

こんにちは、スズです。

本エントリは2020年アドベントカレンダー『今日からはじめるAlteryx再入門』の06日目のエントリです。

本日06日目は、『Alteryxでデータを分割!パースしてみよう』をお届けします。

執筆環境

本エントリの執筆環境は以下の通りです。

  • Alteryx Designer 2020.4.5.12471 Non-Admin
  • Windows 10 Pro

パース(解析)って何だろう?

parseは「構文解析する」という意味を持つ英単語です。データ分析におけるパース(解析)は、データを分析する上で扱いやすい単位にデータを分割する、という趣旨で使われます。

例えば、以下のようなデータがあったとします。

Item
111 T-shirt Blue SS
223 Blouse Red M
334 Hoodie Gray L

このデータは1つの列(フィールド)にまとめられていますが、「101」はID、「T-shirt」はカテゴリ、「Blue」は色、「SS」はサイズ、というようにそれぞれに意味があります。この意味ごと列を分割することで、データを扱いやすくします。

ID Category Color Size
111 T-shirt Blue SS
223 Blouse Red M
334 Hoodie Gray L

Alteryxでパースってどうやるの?

Alteryxでのパースの例として、列分割ツール、正規表現ツール、フォーミュラツールを使って、先ほどのデータをパースしてみます。扱うデータや、後の処理でデータをどのように活用するのかによってパースのやり方は変わってくるかと思いますので、一例としてご覧いただければ幸いです。

区切り文字を指定して簡単に分割、列分割ツール

列分割ツールは、カンマなどの区切り文字を指定することで、1つの列に含まれるデータを複数の列に分割することができます。列に分割する行に分割するの2つの方法があります。

列に分割する

区切り文字と分割する列の数を指定して処理を行います。今回の場合、区切り文字は半角スペースなので\sを指定します。また、分割したいデータは4つなので、列数は4を指定します。

分割した結果は以下の通りになります。新しく列が作成され、それぞれの列にデータがあります。

行に分割する

行に分割する処理は、列に分割する処理にあった列数の指定が不要という利点があります。分割したい列の数が変動するようなデータの処理に活用できます。

先ほどと同様に、区切り文字に\sを指定して実行します。

分割した結果は以下の通りになります。行に分割する操作では、元の列を上書きして、データを出力します。

この結果を見ると、異なる意味を持つデータが1つの列に集約されてしまい、扱いづらくなったように見えます。行に分割する処理をする場合は、この後にデータをどのように整形していくかも考えて活用するといいかと思います。

この後の処理で元のレコードごとに識別が必要となる場合には、行に分割する処理の前に各レコードを識別するIDを割りあてておくことで対応できます。今回のデータでは、「111」「223」「334」の部分がIDという想定になりますので、この部分をあらかじめ列に分割した上で、残りを行に分割する処理を行う、という方法が考えられます。

元のデータにIDがない場合は、列分割ツールの前にレコードIDツールを挿入してIDを割り当てることもできます。

列分割ツールでのパースについて紹介しましたが、列分割ツールにはここでは紹介していないオプションがあります。ツールの詳細については、以下のエントリにてご紹介しております。

正規表現で自在に対応、正規表現ツール

正規表現ツールは、その名前の通り、正規表現を扱えるツールです。正規表現とは、文字のパターンを記述することで様々な文字列に対応させることができる表記法です。正規表現ツールにはいくつか出力方法がありますが、その中の解析では、対象の列から正規表現の記述に合致したデータを別の列に分割します。

正規表現を入力、出力方法に解析を指定、列名も入力して実行します。

実行結果は以下の通りになりました。4つの列が作成され、それぞれデータが含まれています。

今回記述した正規表現は以下の通りです。

正規表現の記述 想定している内容
\s スペース
\d* 0文字以上繰り返す数字
.* 0文字以上繰り返す任意の1文字
[SS|S|M|L|LL] SS、S、M、L、LLのいずれかの文字列

正規表現は慣れていないとなかなか使うのが難しいかと思いますが、正規表現のテストや確認ができるサイトもありますので、調べながら使っていくと便利かと思います。

正規表現ツールには他のオプションがありますので、詳細については以下のエントリにてご確認ください。

また、弊社にて実施しておりますデータ整形トレーニングでは正規表現についても取り扱っておりますので、ご利用いただきますと幸いです。

関数使っていろいろこなせる、フォーミュラツール

フォーミュラツールでは関数を利用できます。文字列操作の関数を使うことで、データを任意の単位に分割することができます。

以下のように関数を使ってパースを行いました。

実行結果は以下の通りとなります。

今回の例では、以下の関数を使用しています。基本的な関数ですが、組み合わせて使うことで対応できます。

関数 意味
Left 左から指定の文字数を取り出す
Right 右から指定の文字数を取り出す
Length 文字列の長さを返す
FindString 指定の文字を検索して場所を返す
Trim スペースを削除する

フォーミュラツールは様々のことに使える便利なツールです。ツールの詳細については以下のエントリをご参照ください。

さいごに

今日から始めるAlteryx再入門アドベントカレンダー06日目『Alteryxでデータを分割!パースしてみよう』をお届けしました。

明日07日目は兼本による『ダウンロードツールでAPIアクセスやWebスクレイピングに挑戦する(仮)』を予定しています。明日もお楽しみに!

参考サイト

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.