[レポート] Workflowの汎用性を高める – Alteryx Inspire 2018 #alteryx18
現地時間2018年06月04日〜2018年06月07日に米国アナハイムで開催されているAlteryxの年次カンファレンスイベント「Inspire 2018」。今回クラスメソッドからは計4人のメンバーが現地参加しています。
当エントリではイベント4日目に行われたトレーニングセッション「Dynamic Optimized Workflows」について、その内容をレポートしたいと思います。
目次
セッション概要
当トレーニングセッションの概要は以下の通りです。
Dynamic Optimized Workflows
(ワークフローの動的な最適化)
登壇者(トレーニング講師):
Kim Hands
トレーニング概要:
In this course, you'll learn tips for developing dynamic workflows and optimizing workflows for speed and processing power.
(このコースでは、動的ワークフローを開発し、速度と処理能力のワークフローを最適化するためのヒントを学びます。)
セッションレポート
タイトルだけ見ると何やら難しそうな内容に感じるかもしれませんが、ワークフロー作成において非常に役立つテクニック集となっています。
ワークフロー作成方法とその課題
Alteryxのワークフローは通常1度作って終わりということはなく、新しいものを追加しながら徐々に成長していきます。
左上のワークフローは最初に作成したものです。 それに対して、右側のワークフローに様々機能追加や改善を入れていき150日たった状態のもにです。非常に複雑なワークフローへと変貌しているのがわかります。 左下のワークフローは理想として、改善を加えて行って150日たってもこのような状態だと嬉しいですよね、という内容のものになっています。
このトレーニングはこういったことを実現するために利用可能な様々なテクニックが紹介されます。
このようなワークフロー作成の考え方としてはこのような流れになります。
- まず今現在のデータに対する課題を解決するワークフローを作成する
- それを過去のデータに対しても適用可能な状態にする
- さらに将来の拡張も踏まえた構成する
- この内容を元にワークフローを拡張していく
となります。
入力
入力ファイルを扱ううえでの課題として、扱うファイルが増えていくような状況があります。
このように最初は1ファイルだったものが、扱うデータが2週目, 3週名,...と増えていき、その都度Input Dataツールを増やしてUnionツールで結合してとやっていくとあっというまにこんな状態になっていまします。
これに対して、状況に応じたいくつかの解決策があります。
もっとも簡単な方法としては、Input Dataツールで「*」や「?」といったワイルドカードを利用してファイルを指定する方法です。
Excelファイルの新規シートとして情報が追加されていくような場合にはDynamic Inputツールで対応可能です。
最新のファイルのみや直近1週間のファイルを取得したい場合には、Directoryツールでファイルの最終更新日から条件を満たすものを取得してDynamic Inputツールで取得することが可能です。
スキーマ
スキーマでは、データの形式が変更されるような場合に対応するための方法となります。
Selectツールなどで必ず一番下にある「*Unknown」という項目。 これは実は現段階でのデータ中に存在していなくて別なタイミングでワークフローを実行した際には存在していた、という列に対応するものになります。 ここにチェックを入れておけばそれらの項目は後続の処理に渡してやることが可能です。
より詳細に利用する列を柔軟に洗濯したい場合は、Dynamic Selectツールを使うことで列名や列番号で条件を満たすものといった指定が可能です。
計算
計算を行う処理では例として2つのバターンが紹介されています。
このように月ごとに列があるデータに対して、列方向の合計値を取りたい場合、Formulaツールなどを利用して1月+2月+...と計算式を追加していくと、月が増えた時に都度計算式にそれを追加してやる必要が生じます。
こういったデータは一度Transposeツールで縦持ちに変換したのち、Cross Tabツールで横持ちにもどしてやります。 その際、計算方法としてTotal ColumnおよびTotal Rowというものが利用可能です。
続いて、Text to Columnツールを使う際のテクニックです。
こちらは、デフォルトの設定値となっている列方向への分割は固定値で列数を指定するため柔軟な変更が難しくなります。 行方向への分割を選択したのち、Cross Tabツールで横持ちに変換してやることで、列数の変化へのより柔軟な対応が可能となります。
出力
最後は、出力への対応です。 条件に応じて出力先のファイルを変えたい時、Filterツールを使って条件ごとに分岐させていくと条件が増えるほど大量のFilterツールが積み重なっていきます。
Output Dataツールでは、特定の列の値をキーにして出力ファイルを分割することが可能です。
おわりに
Alteryx Inspire 2018のトレーニングセッション「Dynamic Optimized Workflows」のレポートでした。 柔軟かつ汎用性の高いワークフローを作ることで変更に強くするという内容になっており、全体を通して1つの何かを実現すると言うよりは、テクニック集的なないようとなっていました。