突然ですが、コミュニティの皆さんは「開発者(Developer)」ツールカテゴリの「分岐(Detour)」ツールを使っておられますか?
(私は使っていませんでした😅)
後述の事情で使いたくなったのですが、サンプルワークフローがコミュニティ上にみあたらず
Tool Mastery Indexにも含まれていなかったので、今回 自分で調べたことをご紹介します。
もっとよい使い方がありましたら是非お知らせください!
分岐ツールに注目した理由
以下のような事情があり、分岐ツールが使えるかと思って調べてみました。
分岐ツールの設定
分岐ツールの設定はシンプルで、チェックボックスが1個あるだけです。
チェックボックスのオン/オフにより、データの出力先が変わります。
入力データがある時は"L"に出力して通常の処理をさせ、
入力データがない時は"R"に出力して処理を迂回させればよいことになります。
マクロを使う
まず、入力データの「ある/なし」を分岐ツールに伝える方法を考えます。
分岐ツールのヘルプページによれば、どうもアプリやマクロで使うのが定石のようです。
分析アプリやマクロでは、ユーザーの入力に基づいてワークフローのセクション全体をオン/オフにするのが一般的です。
分岐は、単一の分析アプリ/マクロアクションで任意の数のツールを効果的に簡単に削除できるようにします。
マクロの中
注意:
「コントロールパラメータ」から「分岐」ツールへbool型(True/False)を渡すときには、1行で渡す必要があります。
(最初、入力データに「ある/なし」項目を付けて渡したら、出力データが行数倍されました。バッチマクロだからですね)
マクロの外
実行結果
メインのワークフローのフォーミュラツールは0件データを作るためのテストユニーク処理です。
時刻によってデータが流れたり止まったりするので、何回か実行してみてください。
応用
おわりに
私も初めて分岐ツールを使ったときに、ヘルプがあまり充実しておらず、どう使うのか悩んだ覚えがあります。Bool値しか受け付けないので、インターフェースツールの接続に工夫がいり、ちょっと設定が大変でした。なので、処理がそこで行き止まりになるようなものは、なるべくコンテナのOn/Offを制御することにしています。
少々野暮ったい処理になりますが、↓のコンテナのように、レコード件数に応じてフラグを生成し、元レコードにフィールド付加し、フィルターで仕分ける・・・という案もあります(各々で出てくるフィールドが異なると厄介ですが)。
他のWFで共通で使う処理であったり、マクロ化することでWF全体の見通しが良くなったりということであれば、@Yoshiro_Fujimori さんのようにバッチマクロで組んでデプロイするのが良さそうですね。
ブログにできそうな記事ありがとうございます!
手動でWF流す時に、処理の中身を使い分けたいとかなら、なんとかギリギリ通常のWFでも使えますが・・・。
基本はやはりマクロ、アプリですね・・・。
3分岐とかになってくると面倒なのでコンテナ使うことが多いように思います。
@AkimasaKajitani さん コメントありがとうございます。
今回はGalleryで実行するワークフローだったので悩みましたが、
確かに手動で分岐するなら、分岐ツールを組み込むより、コンテナにしたほうがボタンをポチっとで済むので良いですね。
@gawa さん
フローのご提示ありがとうございます。
今回のケースで、迂回するPythonツールがブラックボックスなのですが、フラグを追加しても同様に動作するなら、この方が分かりやすくてよいですね!
(なお「Countフィールドはint64で重たいのでドロップ」のコメントにgawaさんのきめ細かいコダワリを感じました😀)
そういえば、昔自社のブログの方に書いた記事がありましたので、ご参考まで。 @Yoshiro_Fujimori @gawa
【AlteryxTips】分岐ツールの使い方
https://newssdx.kcme.jp/alteryx-tips-how_to_use_detour/