Challenge #63: Data Preperation Using Pivot Tools ~ピボットツールを使ったデータの準備~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
当エントリは『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』の19日目です。
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 - Qiita
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 | シリーズ | Developers.IO
『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』では、Alteryx Communityで公開されているWeekly ChallengeのIntermediate Levelにひたすら1人で挑戦していきます。
今回はピボットツールを使ったデータの準備に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2018.4.4.54346 英語版
Challenge #63: Data Preperation Using Pivot Tools
お題
今回挑戦するお題はこちら。
「Input」側のデータはこちら。
「Output」側のデータはこちら。
出力するデータのポイントは以下のとおりです。
- 「DMA」列:「Row Labels」の数値
- 「Week Of」列:「Mar 28, 2016 - Apr 3, 2016」などのハイフンの後の日付をDate形式に直して出力
- 「Inside - Point Of Sale」列:「Inside - Point-Of-Sale」の数値
- 「Outside - Point Of Sale」列:「Outside - Point-Of-Sale」の数値
- 「Total - Point Of Sale」列:「Mar 28, 2016 - Apr 3, 2016 Total」の数値
解答の概要
今回作成するワーフクローは以下の通りです。
- 日付、Point Of Sale、DMA番号を1つの列に出力
- データを日付、Point Of Sale、DMA番号に分割して結合
- 日付の変換、列と出力するデータを調整
簡単にワークフローの全体と一部要点をご紹介していきます。
日付、Point Of Sale、DMA番号を1つの列に出力
Sampleツール(Preparation -> Sample)で始めの8行を削除し、Record IDツール(Preparation -> Record ID)でIDを付与します。
Transposeツール(Transform -> Transpose)を使用して、日付、Point Of Sale、DMA番号を1つの列に出力します。
「RecordID」列が「1」のデータの「Value」列には、日付が出力されています。一部Nullがあります。
「RecordID」列が「2」のデータの「Value」列には、「Point Of Sale」が出力されています。一部Nullがあります。
「RecordID」列が「2」のデータの「F1」列には、DMA番号が出力されています。
日付、Point Of Sale、DMA番号にデータを分割して結合
Multi-Row Formulaツール(Preparation -> Multi-Row Formula)を使用して、「Value」列の日付と「Point Of Sale」のNullを修正します。
式は以下の通り設定しています。
if [RecordID] == 1 and IsNull([Value]) then [Row-1:Value] elseif [RecordID] == 2 and IsNull([Value]) then "Total - Point Of Sales" else [Value] endif
- 「RecordID」列が「1」で「Value」列がNullの場合は1つ上の「Value」列を出力
- 「RecordID」列が「2」で「Value」列がNullの場合は「Total - Point Of Sales」を出力
- それ以外の場合は「Value」列を出力
Filterツール(Preparation -> Filter)で日付、Point Of Sale、DMA番号のデータに分割し、Unionツール(Join -> Union)で分割したデータを「Name」列で結合します。
日付の変換、列と出力するデータを調整
Formulaツール(Preparaion -> Formula)を使用して、「Week Of」列をDate型で作成します。
式は以下の通り設定しています。
DateTimeParse(Replace(Right([Value], Length([Value]) - FindString([Value], "-") - 2), " Total", ""), "%b %d,%Y")
Cross Tabツール(Transform -> Cross Tab)を使用して、DMA番号、日付(Week Of)、「Point Of Sale」を出力する列を作成します。
Selectツール(Preparation -> Select)を使用して、データ型の変換と列名の修正を行います。
Data Cleasingツール(Preparation -> Data Cleansing)を使用して、Nullを0に修正します。
結果を確認して完成です。
最後に
今回はWeekly ChallengeのChallenge #63: Data Preperation Using Pivot Toolsに挑戦しました。
明日もお楽しみに!
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。