Alteryxは本来持っていない機能でもワークフロー内部に実装することが可能です。これにより非常に柔軟に運用を行うことが可能です。
今回は、特定の時間帯だけしか動かないワークフローを作ってみたいと思います。これは、データベースなどに接続するような場合に、データベースの負荷が気になるような場合に有効です。
基本的な考え方
基本的には、現在日時ツールを使います。
これにより、ワークフロー実行時の日時を取得することができます。これに対して、実行可能時間帯リストと比較し、ワークフローを実行していいかどうか判断をします。オッケーであれば、そのまま何もしませんし、NGであればワークフローを止めます。この止め方がAMPオン、オフ、およびインプットしないようにするのか、出力しないようにするのか、といったところで手法が変わってきます。それぞれ見ていきましょう。
実行時間帯チェック
と、その前に実行可能時間帯チェックをしてみましょう。ワークフローとしては以下のようになります。
実行可能時間帯リストは以下のように作っています。
今回のワークフローでは23:00~25:00みたいな入力はできないようにしています。このような記載を行いたい場合は、判断ロジックを複雑に作り込む必要がありますが、今回は判断ロジックがシンプルにできるように作成しており、Between関数で比較できるようにフィールド付加ツールで時間型に変換しています。
フィルターツールで条件に合致したレコードがあるかどうかをレコードカウントツールでカウントし、メッセージツールでメッセージを出しつつエラーとして通過するレコードを止めるようにしています。
ここからAMPエンジンオン・オフ、入力、出力で場合分けしていきます。
AMPエンジンオンの場合
2020.2で初登場したAMPエンジンは、マルチスレッドで高速に動作するように作られた処理エンジンです。従来のE1エンジンはデータを一度に1つずつ移動していましたが、データを複数のパケットに分けて処理しています。AMPエンジンは高速に処理ができる上、一部の最新機能はAMPエンジンオン時しか使えないようなものもあるため、積極的に使っていきたいところです。
次に、2023.1で初登場のコントロールコンテナを使うことで、ワークフローの実行順の制御が可能です。今回はこれを使っていきます。
コントロールコンテナはコントロール入力と呼ばれるコンテナのタイトル部分の左側にあるアンカーに何かが接続されていれば、データが入ってきた場合のみ動作するようになっています(そもそも何も接続されてなければ普通に動きます)。そのため、AMPエンジンでコントロールコンテナを使えば簡単に今回やろうとしていることが実現できます。ワークフローとしては以下のようになります。
今回わざわざメッセージツールを使っていますが、フィルターツールのT出力をそのままコントロールコンテナの入力に接続しても問題ありません(カウントツールとメッセージツールを取り除くことができます)。
まとめ
- 特定の時間帯しか動作しないワークフローの作り方を解説しました
- 今回はAMPオンの場合の手法について説明しました。この方法はコントロールコンテナを利用するため、2023.1以降で利用可能です。2020.2~2022.3をお使いの場合は旧エンジンを使いましょう(次回解説)。
サンプルワークフローダウンロード
次回
次回は今回の続きで、E1エンジン(オリジナルエンジン)で同様のワークフローを作成していきましょう。
コメント