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』では、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」の数値

解答の概要

今回作成するワーフクローは以下の通りです。

  1. 日付、Point Of Sale、DMA番号を1つの列に出力
  2. データを日付、Point Of Sale、DMA番号に分割して結合
  3. 日付の変換、列と出力するデータを調整

簡単にワークフローの全体と一部要点をご紹介していきます。

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

alteryx_960x400