Challenge #49: Reformatting Transactional Data ~トランザクションデータの再フォーマット~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回はトランザクションデータの再フォーマットに挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.6.58192 英語版
Challenge #49: Reformatting Transactional Data
お題
今回挑戦するお題はこちら。
Input側に用意されているデータはこちら。1行目から3行目が「PRODUCT」「MARKET」「TYPE」という項目になっています。
Output側のデータはこちら。データを縦持ちに変換し、「Date」列「MARKET」列「PRODUCT」列「TYPE」列「Value」列を用意しています。
解答
今回作成するワークフローはこちら。
Record IDツールでIDを付与したのち、Filterツールで項目とデータ(「Value」列に入るデータ)に分けます。Basic filterを選択し、「F2」列に「A」が含まれているか否かで分けています。
2つに分けたデータをそれぞれ処理していきます。まずは「F2」列に「A」が含まれている方。
Transposeツールを使用して、Key Fieldsに「RecordID」列、Data Fieldsにそれ以外の列を選択して、縦持ちに変換します。
変換した結果がこちら。
Cross Tabツールを使用して、「PRODUCT」「MAEKET」「TYPE」が同じ行に並ぶように設定します。
設定はこちら。
- Group Data by these Values: 「Name」列
- New Column Headers: 「RecordID」列
- Values for New Columns: 「Value」列
変換した結果がこちら。
Filterツールに戻り、「F2」列に「A」が含まれていない方のデータの処理を行います。
Transposeツールを使用して、Key Fieldsに「RecordID」列、Data Fieldsにそれ以外の列を選択して、縦持ちに変換します。
変換した結果はこちら。
項目名とデータがそろいましたので、Joinツールで結合します。Join by Specidic Fieldsを指定して「Name」列で結合します。また、不要な列は削除しています。
Filterツールを使用して、「Name」列が「F1」か「F1」以外かでデータを分けます。Basic filterで「Name」列「Down not equal」「F1」と指定します。
「Name」列が「F1」以外のデータはこちら。
「Name」列が「F1」のデータはこちら。「Value」列は日付になっています。
Find Replaceツールを使用して、「Name」列が「F1」以外のデータにある「RecordID」列を、「Name」列が「F1」のデータの「Value」列(日付)に置換します。
設定はこちら。
- Any Part of Field
- Find Within Field: 「RecordID」列
- Find Value: 「RecordID」列
- Replace Found Text With Value: 「Value」列(日付)
Selectツールを使用して、列名の修正と不要な列の削除を行います。
先頭に空白が入っているデータがありましたので、Data Cleansingツールでデータをきれいにします。
結果を確認して完成です。
最後に
今回はChallenge #49: Reformatting Transactional Dataに挑戦しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。