Challenge #53: Parsing Report Formatted Data ~バーティカルバーで区切られたデータの整形~ – Alteryx Weekly Challenge

2019.05.31

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

こんにちは。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日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400