Challenge #54: Data Prep Address Parsing ~区切られていないデータの整形~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は区切られていないデータの整形に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.6.58192 英語版
Challenge #54: Data Prep Address Parsing
お題
今回挑戦するお題はこちら。
Input側のデータはこちら。データが1つの列にまとめられています。
Output側のデータはこちら。元のデータから「City」「State」「Zip」に列を分けています。
解答
今回作成するワークフローはこちら。
Recort IDツールでIDを付与したのち、「City」「State」「Zip」になるデータに分けて処理を行っていきます。まずは「City」列の処理を行います。
Text To Columnsツールでデータを分割します。Delimitersに\s
を指定して半角スペースでデータを分けるようにします。また、Split to rowsを指定して同じ列に出力します。
分割した結果はこちら。
Multi-Row Formulaツールを使用して、同じIDを持つデータに番号を振っていきます。新しく「Number」列をInt32型で作成します。
Expressionには以下のとおり設定します。1つ上の「RecordID」列と同じ場合は1つ上の「Number」列に1足して出力し、それ以外の場合は「1」を出力します。
IIF([Row-1:RecordID] == [RecordID], [Row-1:Number] + 1, 1)
Cross Tabツールを使用して、データを横持ちに変換します。
横持ちに変換して結果はこちら。
Formulaツールを使用して、V_WString型で「City」列を作成します。
設定は以下のとおりです。Output側のデータにあわせて、出力するデータの条件を設定しています。
if [RecordID] == 1 then [5] + " " + [6] elseif [RecordID] == 2 or [RecordID] == 6 or [RecordID] == 7 then [4] elseif [RecordID] == 8 then [5] else [4] + " " + [5] endif
続いて、RegExツールを使用して「State」列と「Zip」列を用意します。
「State」列はこちら。Regular Expressionに([A-Z]{2})
を指定します。
「Zip」列はこちら。Regular Expressionに(\d{5})$
を指定します。
「City」「State」「Zip」のデータの準備ができました。Jon Multipleツールを使用して、「RecordID」列で3つのデータを結合します。あわせて不要な列の削除と列名の修正を行います。
結果を確認して完成です。
最後に
今回はChallenge #54: Data Prep Address Parsingに挑戦しました。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。