Challenge #53: Parsing Report Formatted Data ~バーティカルバーで区切られたデータの整形~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回はChallenge #53: Parsing Report Formatted Dataに挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.6.58192 英語版
Challenge #53: Parsing Report Formatted Data
お題
今回挑戦するお題はこちら。
Input側のデータはこちら。バーティカルバー(|)で区切られたデータを読み込んでいますが、全て同じ列に出力されています。
Output側のデータはこちら。データの種類ごとに列を分けています。
解答
今回作成するワークフローはこちら。
Record IDツールを使用してIDを付与したのち、Text To Columnsツールでデータを分割します。Delimitersにバーティカルバーを指定し、Split to rowsを選択します。
まずはデータを分割できました。
列名が「-----」のままでは使いづらいので、Selectツールを使用して列名を変更します。そのあと、Data Cleansingツールを使用して不要な空白を削除します。
データは以下のようになります。
Multi-Row Formulaツールを使用して、データを種類ごとにグループ分けします。新しく「Group」列をInt32型で作成します。
Expressionには以下のとおり設定しています。「-」が含まれる行に「0」を出力し、それ以外の場合には「Group」列の1つ上の数値に1を足して出力します。
IIF(Left([Value], 1) == "-", 0, [Row-1:Group] + 1)
Cross Tabツールを使用します。Group Data by these Valuesに「RecordID」列、New Column Headersに「Group」列、Value for New Columnsに「Value」列を設定します。
データが横持ちになりました。
Selectツールを使用して不要な列を削除、Filterツールを使用して「2」列が空欄の行を削除、Formulaツールを使用してデータを更新します。
「5」列の設定は以下のとおり。
iif([5] == "#" or IsEmpty([5]), "N/A", [5])
「9」列の設定は以下のとおり。
IIF(IsEmpty([9]), Null(), [9])
Dynamic RenameツールでTake Field Names from First Row of Dataを使用して、初めの行を列の名前にします。
結果を確認して完成です。
最後に
今回はChallenge #53: Parsing Report Formatted Dataに挑戦しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。