Skip to main content

Control Container Tool Icon コントロールコンテナツール

ツールごとに学習

コントロールコンテナには、「ツールごとに学習」が用意されています。 サンプルワークフロー を参照して、このサンプルを含むさまざまなサンプルを Alteryx Designer で直接利用する方法をご確認ください。

control-container-example-image.png

コントロールコンテナを使用して、ワークフローでツールが実行される順序を管理し、プロセス中の各ステップが正しい順序で実行されるようにします。コントロールコンテナでは、実行されたツールに関する情報をログ情報として、またはワークフローで使用するデータとして使用できます。その結果、その実行情報に基づいて、より動的で複雑なプロセスを構築することができます。

さらに、コントロールコンテナでは、別のコントロールコンテナあるいはワークフローの他のツールから、ワークフローデータに基づいて特定の論理ブロックを条件付きで実行することができます。分岐、連鎖アプリ、ランナーツールを使用して、複雑な条件付きオーケストレーションを構築する必要はありません。

AMPのみ

コントロールコンテナツールは、 Alteryxマルチスレッド処理 (AMP) とのみ互換性があります。AMPが無効になっているワークフローでツールを実行しようとすると、ツールがエラーを表示します。

ツールコンポーネント

コントロールコンテナには、オプションのコントロール入力とログ出力の2つのアンカーがあります。

control-container-anchors.png

コントロール入力(オプション)

コントロールコンテナにはオプションの入力アンカーがあります。この入力を使用して、コンテナをアクティブにします。

control-container-input-anchor.png
  • コントロール入力に接続がない場合、コンテナはアクティブであると見なされます。この場合、コントロールコンテナはツールコンテナのように動作しますが、その中で完了したアクションに関するメッセージをログ出力アンカーから出力します。

  • コントロール入力に接続が存在する場合、少なくとも1つの入力レコードとともに接続が終了するとコンテナはアクティブになります。*データストリームのメタデータとコンテンツには依存しません。重要なのは、少なくとも1つのレコードが存在することです。

重要

*コントロールコンテナをアクティブにするには1つのレコードが必要ですが、 すべて のレコードがコントロール入力アンカーを通過するまで、コンテナはその中のツールを実行しません。つまり、1,000件のレコードをコントロールコンテナに渡すと、コンテナは1,000件のレコードすべてを受け取るまでその中のツールを実行しません。

ログ出力

ログ出力では、コンテナ内(コンテナ内の他のコンテナを含む)のツールのみについて、すべてのユーザー向けログメッセージが生成されます。このメッセージデータは、Designerの他のデータストリームと同様に使用することができます。例えば、このログ情報をファイルに書き込んだり、解析してさらにロジックを実行することができます。

注記

コントロールコンテナデータに表示されるメッセージは、結果グリッドで表示されるメッセージのみであることに注意してください。このため、結果グリッドを介してメッセージを生成しないツールは、コントロールコンテナでもメッセージを生成しません。

独自のメッセージを生成しないツールについては、いつでも メッセージツール を使用してメッセージの作成とカスタマイズができます。

control-container-output-anchor.png
  • コントロールコンテナがアクティブになると、「コントロールコンテナを有効化しました。」という情報メッセージがログに記録されます。

  • その後コンテナが含まれるすべてのツールを処理すると、「コントロールコンテナが完了しました。」という別の情報メッセージがログに記録されます。

  • その後、コンテナはログ出力アンカーを閉じます。コンテナ内のすべてのツールの実行が完了する前に、コンテナがメッセージを送信する場合があることに注意してください。詳細については、「実行順序に関する重要な考慮事項」セクションを参照してください。

つまり、コンテナから出るすべてのデータストリームがすでに閉じられ、コンテナがアクティブになった場合には、各ログ出力から2つのメッセージが取得できることが保証されます。コンテナが無効になっている場合は、メッセージを送信することなくログ出力を閉じます。

This image shows an example of a Control Container's log messages in the Results window.

コントロールコンテナの仕組み

コントロールコンテナは、 ツールコンテナ とはまったく異なる動作をすることに注意が必要です。ブール型(true/false)のシナリオを使用して、オプションのコントロール入力アンカーに接続されたデータストリームがあるかどうか、入力データストリームがある場合、そのデータストリームにレコードが含まれているかどうかを判断します。

  • 入力データストリームが ない 場合、コントロールコンテナはツールコンテナのように動作しますが、その中で実行されるアクションに関するメッセージをログ出力アンカーから出力します。これらのメッセージは、通常Designerの 結果ウィンドウ に表示されるメッセージと同じ動作をします。

  • コントロール入力アンカーに接続された入力データストリームが ある 場合、コントロールコンテナはコンテナ内でツールを実行するかどうかを評価します。これは、入力接続が閉じたときに少なくとも1つのレコードを受け取ったかどうかに基づいています。

    • 1つのレコードを受け取った場合、接続が閉じた際、すなわち すべて のレコードが入力を通過した際に、コンテナがアクティブになります。

    • コントロール入力がレコードを受け取っていない場合、コンテナはキャッシュされたメタデータのみを出力にプッシュします。メッセージは渡されず、コンテナ内のツールは実行されません。

無効になっているコントロールコンテナと停止しているコントロールコンテナ

無効になっているコントロールコンテナと有効になっている(ただし停止している)コントロールコンテナの動作の違いに注意することが重要です。

  • コントロールコンテナを 無効 にすると、Designerはコンテナ(およびコンテナ内のすべてのツール)を無視します。また、コンテナまたはコンテナ内のツールの設定エラーも報告しません。

  • コントロールコンテナが有効になっている場合、ワークフローを実行してコンテナの入力アンカーがレコードを受け取るか受け取らないかないかを確認するまで、Designerはコンテナを有効にするかどうかを判断しません。

    Designerでは、ワークフローを実行するときに、すべてのワークフロー事前検証チェックを実行する必要があります。この事前検証チェックでは、含まれるツールが適切に設定されていない場合、コントロールコンテナ内でエラーを生成します。そのコンテナが、最終的に入力アンカーのレコード受け取りによって有効化されるかどうかに関係ありません。これを回避するには、そのコントロールコンテナがワークフローの一部として有効化されない場合でも、コンテナ内のすべてのツールが正しく設定されていることを確認してください。

実行順序に関する重要な考慮事項

一部の状況で、コントロールコンテナ内のツールは、コンテナ内のすべてのツールの実行が完了する前にコンテナの外部にデータを送信できる場合があり、その結果、コンテナがそのログ出力アンカーを介してデータを送信する前にデータが送信されることがあります。これは、コンテナ内のツールが外部のツールに直接接続されている場合に発生する可能性があります。

なぜこのようなことが起こるのかを理解するためには、 AMPがどのようにデータを処理するか を理解することが重要です。AMPは、ツール間の同期作業を最小限に抑え、パフォーマンスを向上させるために、ツール間のデータをレコードのパケットとして送信します。ツールを通過するレコードが多い場合、パケットがいっぱいになり、下流に送る必要があります。

実行順序の概要

前述したように、コントロールコンテナはコントロール入力アンカーを介してすべてのレコードを受け取るまで、その内部のツールを実行しません。入力アンカーが複数のパケットを介して多数のレコードを受け取る場合、コンテナはすべてのパケットを受け取るまで、その入力でパケットを保持します。すべてのパケットを受け取ると、コンテナがアクティブになります。

コンテナがアクティブになると、コンテナ内のツールが実行されます。この過程でコンテナが境界外にデータを渡すと、コンテナ内のすべてのツールの実行が終了する前に、そのデータがコンテナを離れる 可能性があり 、これはAMPエンジンがレコードパケットをどのように組み立て、順序付けするかによります。

コンテナのログ出力アンカーは、有効化されるとすぐに、コンテナ内で実行するツールのメッセージ収集を開始します。メッセージの収集は、次のいずれかに該当するまで継続されます。

  • レコードパケットが下流に送るのに十分な大きさになったとき、その時点で次のパケットがメッセージの収集を開始。

  • コンテナがその中のすべてのツールを実行し、「コントロールコンテナが完了しました」のメッセージで終了したとき。

実行順序を確約するための推奨事項

上記を考慮し、実行順序がワークフローにとって重要な場合は、追加のコントロールコンテナを使用して、コンテナの境界を越えるレコードが正しく順序付けされるようにする必要があります。

コントロールコンテナの出力アンカーを別のコントロールコンテナの入力アンカーに接続する場合、2つ目のコンテナはその中のツールをアクティブにして実行する前に、コントロール入力アンカーを介してすべてのレコードを受信する必要があることに注意してください。

簡略化した例を挙げると、あるプロセスが別のプロセスの終了前に開始されないことを確実にする必要がある場合、以下の例2のように、常に複数のコントロールコンテナを使用する必要があります。

例 1

この構成は、すべてのレコードがフィルターツールを通過するまでメッセージツールが開始されないことを保証 できず 、また(他のツールが含まれていた場合)すべてのツールがコントロールコンテナ内で実行されたことを保証することもできません。

control-container-example-1.png

例 2

この構成によって、コントロールコンテナ5がコントロール入力アンカーを介してすべてのレコードを受け取ってからメッセージツールが開始されることが保証されます。最初のコンテナ内のすべてのツールの実行が完了し、コンテナが「コントロールコンテナが完了しました。」というメッセージをログに記録したときにのみ、メッセージツールが開始されます。

control-container-example-2.png

コンテナ内のグループツール

コンテナ内のツールをグループ化する方法は、いくつかあります。

  • キャンバスで1つ以上のツールを選択して右クリックし、 新しいコントロールコンテナに追加 を選択します。

  • コントロールコンテナツールをキャンバスにドラッグし、グループ化するツールの近くに配置します。Ctrlキーを押してツールを選択し、コンテナにドラッグアンドドロップします。

コンテナを展開または折りたたむには、コンテナの右上にある展開/折りたたみアイコンを選択します。

コンテナの内容を変更する

  • ツールを削除せずにコンテナを削除するには、展開したコンテナを右クリックし、 コンテナのみ削除 を選択します。

  • コンテナからツールを削除するには、ツールを選択してコンテナの外にドラッグします。

コンテナを無効にする

ワークフローでセクションまたはプロセスを実行したくない場合、コンテナを無効にします。無効に設定されたコンテナはキャンバス上で展開されたままになり、グレー表示で無効な状態であることを示します。コンテナ内のツールは、コンテナを再度有効にするまでデータを処理しません。コンテナが無効になっている場合は、メッセージを送信することなくログ出力アンカーを閉じます。

コンテナを無効にするには、次の 2 つのオプションがあります。

  • コンテナの 設定 ウィンドウで、 無効 チェックボックスにチェックを入れます。

  • キャンバスで、コンテナ左上のトグルを選択し、スライダーを左側にします。

無効なコンテナを折りたたんで、その内容を非表示にできます。コンテナ内の展開/折りたたみアイコンを選択して、展開/折りたたみを行います。

コンテナを有効にする

コンテナを有効にするには、次の 2 つのオプションがあります。

  • コンテナの 設定 ウィンドウで、 無効 チェックボックスのチェックを外します。

  • コンテナの左上のトグルを選択し、スライダーを右側にします。

ツールの設定

コントロールコンテナツールがワークフローキャンバスに配置されたら、コントロールコンテナのツール設定ウィンドウを使用して、コンテナのラベルを指定したり、コンテナの外観を変更したり、必要に応じてコンテナを無効にしたりすることができます。

  • [ 設定 ]ウィンドウで、[ キャプション ]フィールドにコンテナの名前を入力するか、キャンバスでコンテナボックスをダブルクリックし、ボックスに直接テキストを入力します。既定のテキストは、「コントロールコンテナ」に、 ID フィールドに表示されるツールIDを加えたものです。

  • コンテナの色テーマを設定します。

    • [ テキストの色 ]、[ 塗りつぶしの色 ]、[ 枠線の色 ] の横にある [...] を選択し、パレットから色を選択するか RGB 値を入力します。

    • 透明度 に値を入力するか、上下のアイコンを使用して色の透明度を設定します。

    • 余白 で幅を選択して、コンテナの境界線とコンテナに含まれるツールとの間のスペースを変更します。

既定の塗りつぶしコンテナの色を設定する...

  1. [ オプション ] > [ ユーザー設定 ] > [ ユーザー設定の編集 ] の順に移動し、[ キャンバス ] を選択します。

  2. [ 既定のキャンバス設定 ] > [ コンテナ ] でお好みの RGB 値を設定するか、[...] ボタンを使用して色を選択します。

  3. 設定を 保存 します。

互換性に関する注意事項と制限事項

インデータベースツール

インデータベースツールは、コントロールコンテナ内で機能します。ただし、インデータベース接続はコントロールコンテナの境界を越えることはできません。つまり、コントロールコンテナの外部に接続In-DBツールがあり、それをコンテナ内のフィルターIn-DBツールに接続することはできません。

インターフェースツール

インターフェースツールは、コントロールコンテナ内ではサポートされていません。インターフェースツールとコントロールコンテナを同じワークフローに含めることができますが、インターフェースツールをコントロールコンテナ内に配置することはできません。

完了までブロックツール

コントロールコンテナも含むワークフローでは、完了までブロック(BUD)ツールは効果がありません。ワークフローに完了までブロックツールとコントロールコンテナの両方が含まれている場合、エラーメッセージが表示され、完了までブロックツールはパススルーツールとして扱われます(順序付けはありません)。

分岐ツール

分岐ツールはコントロールコンテナ内で機能します。分岐開始と分岐終了の通常の規則に従う必要がありますが、分岐終了ツールが起動しないコントロールコンテナ内にある場合、そのデータストリームは破棄されることに注意してください。

ネスト配置されたコントロールコンテナ

コントロールコンテナは、他のコントロールコンテナ内にネスト配置されている場合も機能します。ただし、ループ接続するとエラーとなります。例えば、同じコンテナ内で、あるコントロールコンテナからのログ出力を別のツールに接続することはできません。

コントロールコンテナとマクロ

コントロールコンテナはマクロ内で機能します。マクロとアプリケーションのアクションは、XML変換の前に適用されます。マクロはコントロールコンテナ内でも機能します。

デバッグワークフロー

コントロールコンテナは現在、マクロおよび分析アプリケーションのインターフェースデザイナーウィンドウからアクセス可能なデバッグワークフロー機能と互換性がありません。コントロールコンテナを含むデバッグワークフローではエラーが発生します。