Challenge #42: Inspire Europe ’16 Grand Prix (L1) ~複数シートのデータの統合等~ – Alteryx Weekly Challenge

2018.12.11

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

こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。

当エントリは『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』の11日目です。

『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』では、Alteryx Communityで公開されているWeekly ChallengeのIntermediate Levelにひたすら1人で挑戦していきます。

今回は複数シートのデータの統合等に挑戦します。

動作環境

当エントリの執筆には、以下の環境を利用しています。

  • Windows 10 Pro
  • Alteryx Designer 2018.4.3.54046 英語版

Challenge #42: Inspire Europe '16 Grand Prix (L1)

お題

今回挑戦するお題はこちら。

「Input」側にはInput DataツールとText Inputツールで2つのデータが用意されています。通常は「Output」側に答えとなるデータがありますが、今回は用意されていません。お題の説明に出力するデータの条件が記載されています。

  1. 付属のExcelファイルの各シートからレコードを統合する
  2. 「Lighting Conditions」列をText Inputツールの情報を使って更新、同じ列名を維持する
  3. 「Accident Date_Date」列を作成し「Accident Date」列からDate形式の日付を作成する
  4. 「Time Buckets」列を作成し「Time (24hr)」列によって以下のパラメータに分類
    ・0000 - 0559 - Early Morning
    ・0600 - 1159 - Morning
    ・1200 - 1559 - Afternoon
    ・1600 - 2059 - Evening
    ・2100 - 2359 - Night

このお題はタイトルに「Inspire Europe '16」とあることから、2016年のヨーロッパのInspireで出題されたもののようです。模範解答にあるワークフローを確認すると、Inspireでは説明に記載されている以外の条件があったようですが、今回は出題にあるワークフローに記載の条件でワークフローを作成することにします。

解答の概要

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

  1. Dynamic Inputツールでレコードを統合
  2. Find Replaceツールで「Lighting Conditions」列を更新
  3. DateTimeツールでDate形式の日付を作成
  4. Formulaツールでタイムバケットを作成

レコードを統合

ワークフローに付属しているExcelファイル「Leeds_Input_data.xlsx」には、2009から2015までのシートがあります。各シートのデータを1つに統合します。

まずは出題用ワークフローに初めから配置されているInput Dataツールの設定を変更し、「Leeds_Input_data.xlsx」からシート名を取得します。Table of Query の設定を List of Sheet Names に変更します。

Dynamic Inputツール(Developer -> Dynamic Input)を使用して、各シートからデータを読み込みます。Input Data Source Template には「Leeds_Input_data.xlsx」を設定します。この時、Table or Query には仮に「2009」のシートを選択しています。

Read a List of Data Sources には Sheet Names を選択、Action には Change File/Table Name を選択します。

結果を確認して1つ目の条件の達成です。

「Lighting Conditions」列を更新

前項で用意したデータには「Lighting Conditions」列があります。

「Lighting Conditions」列を、Text Inputツールで用意されている「Reclassify」列のパラメータに変更します。

Find Replaceツール(Join -> Find Replace)をワークフローに配置します。Dynamic InputツールからFind Replaceツールの F の入力に接続し、Text InputツールからFind Replaceツールの R の入力に接続します。設定は以下の通り行います。

  • Find: Any Part of Field
  • Find Within Field: Lighting Conditions
  • Find Value: Lighting Conditions
  • Replace: Replace Found Text With Value: Reclassify
  • Replace Multiple Found Item (Find Any Part of Field only)

結果を確認して2つ目の条件の達成です。

Date形式の日付を作成

「Accident Data」列の日付からDate形式の日付を出力します。

DateTimeツール(Parse -> DateTime)を接続して以下の通り設定します。

  • Select the format to convert: String to Date/Time format
  • Select the string field to convert: Accident Date
  • Specify the new column name: Accident Date_Date
  • Select the format that matches the incoming string field: dd-Mon.-yy

結果を確認して3つ目の条件の達成です。

タイムバケットを作成

「Time Buckets」列を作成し、「Time (24hr)」列に書かれている時間から分類します。

Formulaツール(Preparation -> Formula)を使用して、「Time Buckets」列をV_WString型で作成します。

式は以下の通り設定しています。

if ToNumber([Time (24hr)]) <= 559 then "Early Morning"
elseif ToNumber([Time (24hr)]) <= 1159 then "Morning"
elseif ToNumber([Time (24hr)]) <= 1559 then "Afternoon"
elseif ToNumber([Time (24hr)]) <= 2059 then "Evening"
else "Night"
endif
  • 「Time (24hr)」列が559以下の場合はEarly Morningを出力
  • 「Time (24hr)」列が1159以下の場合はMorningを出力
  • 「Time (24hr)」列が1559以下の場合はAfternoon
  • 「Time (24hr)」列が2059以下の場合はEveningを出力
  • それ以外はNightを出力

結果を確認して4つ目の条件の達成です。

最後に

今回はWeekly ChallengeのChallenge #42: Inspire Europe '16 Grand Prix (L1)に挑戦しました。

明日もお楽しみに!

サンプルワークフローのご案内

クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400