Alteryxチームでプチハッカソンをやってみた 1つのファイルに含まれるデータの分類編

2019.07.19

こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。

社内のAlteryxチームでは、1つのお題に対して各自でワークフローを持ち寄ることがあり、その様子をプチハッカソンとしてブログで紹介しています。今回は1つのファイルに含まれるデータの分類についてご紹介いたします。

プチハッカソン 1つのファイルに含まれるデータの分類編

お題

以下の画像は、1つのCSVファイルから読み込んだデータです。1つのファイルに「Okashi」「Yougashi」「Wagashi」という異なる種類のデータが含まれています。このデータを、「Okashi」「Yougashi」「Wagashi」の3つのデータに分割する、というのが今回のお題です。

解答1

スズによる解答はこちら。「データを3つに分ける」ということだけを目指して、Nullのデータの扱いなどは考えていないものです。

データの分類にはMulti-Row Formulaツールを使用しています。

式は以下のとおり設定しています。「Field_1」列の1つ上の行がNullだった場合は、「Category」列の1つ上の行に1足して出力します。

IIF(IsNull([Row-1:Field_1]), [Row-1:Category] + 1, [Row-1:Category])

出力結果はこちら、「Category」列に種類ごとに異なる数字が出力されています。

あとはFilterツールを使用して、「Category」列の数字ごとにデータを分けていきます。

解答2

じょんすみすによる解答はこちら。このワークフローでは、Output Dataツールでデータを3つに分けてファイルに出力します。

Formulaツールを使用して、新しい列をInt16型で作成します。

設定した式はこちら。「Field_1」列がNullの場合に1、それ以外の場合に0を出力します。

iif(isnull([Field_1]), 1, 0)

Running Totalツールを使用して、先ほど作成した列の数値を上の行から順足した数を出力します。

この時点でデータは以下のようになっています。

Filterツールを使用して、「Field_1」列がNullになっているデータを取り除きます。

Multi-Row Formulaツールを使用して「title」列をV_WString型で作成し、データの種類ごとに出力するためのファイル名を設定します。Group Byでは「Run Tot_i」列(Running Totalツールで出力した列)を指定しています。

設定した式はこちら。1行上の「title」列がない場合は「Field_1」列を、それ以外の場合は1行上の「title」列を出力します。

IF [Row-1:title] == "" THEN [Field_1] 
ELSE [Row-1:title] ENDIF

Filterツールを使用して「Field_1」列と「title」列が異なるデータのみ残します。

Selectツールで不要な列を削除したのち、Output Dataツールでファイルに出力します。Take File/Table Name From FieldAppend Suffix to File/Table Nameを使用し、「title」列を指定します。

実行すると、ファイルが3つ作成されています。

ファイルの中を確認すると、それぞれのファイルにデータが出力されています。

最後に

今回は1つのファイルに含まれるデータの分類についてのプチハッカソンの様子をご紹介しました。

サンプルワークフローのご案内

クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400