AlteryxのCache Datasetマクロ

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

こんにちは、小澤です。

Alteryxに欲しい機能として、「ワークフローの途中の出力をキャッシュしておいて次回実行時にはそこから実行する」 というのがあげられるかと思います。 特に扱うデータが非常に大きいものになると、都度途中までの処理をなんども実行するのには非常に時間がかかってしまいます。

今回は、そんな動きを擬似的に行える素敵マクロの紹介を行いたいと思います。

ワークフローの実行有無の制御

Alteryxではワークフローの一部を実行"しない"という設定が可能です。 これにはTool Containerを利用して、無効化するという方法を使います。

この機能を使うことで、全体として枝分かれしたいくつかの処理を行うワークフローなんかでは、「今実装中の部分以外は実行しない」といったことが可能です。 また、Tool Containerの設定もインターフェースツールから制御できるのでマクロなんかでは設定値に応じて特定の処理の実行の有無を制御するなんてことも可能です。

しかし、この機能はあくまでも「一部を実行しない」なので、無効にしてあるコンテナの後続に続く処理が有効な場合には、データの取得ができず実行されません。 例として、以下のような2部構成のワークフローを見てみます。

このワークフローの前段のPrepの部分を以下のように無効化してみます。

この状態で実行しても、一番最後のBrowseツールの結果は以下のようにグラフが表示されない状態となります。

Cache Datasetマクロの登場

さて、先ほどはやり方では「途中からワークフローを実行する」というは実現できないことがわかりました。 このようにAlteryxの標準の機能ではワークフローの途中から実行することはできません。

では、先ほどの例の「Prep」の部分が大量のデータを扱うため処理が重く、「Report」の部分が高度で複雑なことを行うようなワークフローだった場合のことを考えてみましょう。 「高度で複雑」なワークフローを組み立てる際には一気に全部を組み立てることはせず、少しずつ組み立てながら都度実行してその結果を確認していくような流れになるかと思います。 また、途中で思い通りの結果にならない場合は一部を組み替えながらといった作業も発生するでしょう。 こういったときに前段のPrepに時間がかかっていては、なかなかワークフローの組み立てが捗りません。

そういった際に、Prepの部分をキャッシュしておいて無効化。Reportの部分はキャッシュしたデータを読み込んで実行。
とできれば非常にありがたいです。 それを実現するのがCache Datasetマクロになります。

このマクロの標準のものではないため、まず以下からダウンロードします。

ダウンロードしたzyxpファイルを展開して、Alteryxで実行するとマクロがインストールされます。 インストール後はDeveloperタブに表示されているのでそれが利用できます。

ツールを配置した状態のワークフローは以下のようになります。

このワークフローを実行すると、そのまま同じ結果が出力されます。

この状態で、Prepを無効化して、Cache Datasetの設定を以下のように変更してみます。

read modeであることを強調するためにエラーメッセージとして出力されていますが、先ほどと違って最終的な結果が出力されているのが確認できます。 ちなみに、write modeであれば後段のワークフローには何も実装されていなくてもキャッシュだけはしてくれます。

今回は、状況をわかりやすくするためにInput Dataツールはコンテナの外に出していますが、これだとデータの入力処理は走ってしまうので、実際のワークフローではコンテナ内にいておくといいでしょう。

Cache Datasetマクロの設定を詳しく見てみる

どのような動きをするかが掴めたところで、マクロの設定項目を見ていきましょう。 このマクロの設定は2つのタブから構成されています。

Questionsタブ

1つ目は、「Questions」タブです。

一番上の「Please specify a (temporary) file ID」では、利用する一時ファイルのIDを指定します。 これはワークフロー中に複数Cache Datasetを配置したり、他のワークフローで利用してたりする際に、どの一時ファイルを入出力として利用すればいいかを示すものになります。

つづいては以下の3つから選ぶものになっています。

  • Write to temp file : 一時ファイルとして書き込む
  • Read from temp file : 一時ファイルから読み込む
  • Bypass : 何もしない

まず、最初の実行でWrite to temp fileで一時ファイルとしてデータをキャッシュします。 キャッシュの有効期限として、以下の3つを選ぶことができます。

  • Delete after shutting down Alteryx : Alteryxを終了した際に削除
  • Delete after # days : 指定した日数経過で削除
  • Never delete : 削除しない

注意点として、Delete after # daysはキャッシュ期間終了時に自動で削除されるのではなく、経過後に最初にワークフローを実行した際に削除されます。

次にそこから先のワークフローを組み立てたのち、前段のコンテナを無効化してRead from temp fileとすることで、そこから処理を再開することができます。 ただし、この設定は、開発中に途中からワークフローを実行するためのものになりますので、その設定のまま実運用を始めないように気をつけてください(注意喚起のためこのモードではエラー出力がされた状態になります)。

最後のBypassでは何もしません。 この設定があることで、最終的なワークフロー内にこのツールが残っていても問題ないような状況を作ることができます。

Advanced Optionsタブ

こちらは、動作の一部動作に関する設定を行います。

「Cache file storage location」では、一時ファイルの保存先を変更できます。 各項目は

  • Default : デフォルトのAPPDATAに保存される
  • Workflow Directory : ワークフローと同じフォルダに保存される
  • Specify cache file save location : 保存先を指定する

となります。

つづいての「Suppress clean up of old cached files」にチェックを入れると有効期限切れのマクロ実行時にチェックして削除するかの選択となります。 ここにチェックを入れると削除を行わなくなります。

最後の「Suppress "read mode" notification error」では、チェックを入れるとread modeの際にエラーとして出力しないようになります。

おわりに

今回は、Cache Datasetマクロの紹介をしました。

実は私もこれを見つけた時はかなり嬉しかったですw
特に大規模なデータを扱っている場合なんかでは、非常に役立つツールだと思いますので、ぜひ使ってみてください。

参考資料

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

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

alteryx_960x400