背景
コントロールシートの行数が多い場合やプロセス時間が長すぎる場合、パラレルチェーンを使用すると実行時間を大幅に短縮できます。
シナリオ例
Group Iterator を使用するコマンドグループがチェーンにあるとします。このセットアップでは、Get Sheet Data コマンドを使用して、Workiva スプレッドシートからコントロールシートのコンテンツを取得します。チェーンは、シートの各行に対して一連のアクションを繰り返します。(セットアップの説明こちら を参照してください)
コントロールシートの行 の実行順序が重要でない場合 、各行が独立して処理できる場合、以下のステップを使用して並列実行することにより、チェーンの効率を向上させることができます。
メモ:以下のステップは上記のサンプルチェーンに基づいています。 ご自分のチェーンや追加コマンドがあれば、必要に応じて調整してください。
ステップ1:プライマリチェーンの準備
- すべてのノード間のリンクを削除します。
- CSV to JSON および コマンドグループ ノードを削除します。
- Tabular Transformations コネクタからAdvanced Query コマンドを追加し、Get Sheet Data ノードに接続します。
- 以下の値でノードを構成します:
- Tables >File: 変数パネルからGet Sheet Data > Data出力を選択します。
- テーブル > テーブル名称:から の間隔を除いた名称を使用。
- クエリ: MySQL
NTILE関数を使用して、各行にグループ番号を割り当てます(例えば、NTILE(3)で3グループ)。
メモ: ご希望の実行時間に整列する適切なグループ数を検索するには、プロセスをテストする必要があります。 ベストプラクティスとして、この数は10未満であるべきです。
ステップ2:並列実行するサブチェーンの設定
- Run Chain イベントで実行されるサブチェーンで、Runtime Inputs コマンドを追加または訂正してください。リマインダー この はチェーンの最初のノードでなければなりません。データファイル用のFileField 入力とグループ番号用のNumberField 入力の2つの入力を構成します。
- 各インスタンスが割り当てられた行のみを処理するようにするには、Runtime Inputs コマンドの直後で、他のコマンドの前に、Filter Rows コマンドを接続します。フィルターはグループ番号によってレコードを分離し、後続のコマンドが正しい行に対してのみ動作するようにします。
メモ: Search Columns フィールドは0ベースです。
- Chain Settings で、Allow concurrent runs オプションが有効になっていることを確認します。
ステップ3:ファイルとグループ番号のパススルー
- プライマリチェーンで、
NTILE関数で使用される グループ番号ごとに、のRun Chain コマンドを 1 つ追加します(例えば、NTILE(3)のコマンドは 3 つ)。- Data File Runtime Input: 変数パネルからAdvanced Query > Result 出力を選択。
- グループ番号 ランタイム入力:1からグループの総数までの一意の番号。
結果
チェーンはコントロールシートの3倍の行を一度に処理します。NTILE の数を増やし、対応するRun Chain コマンドを追加することで、さらに拡大縮小できます。
警告
- 一度に多くの並列チェーンを実行すると、プラットフォームの制限を超え、コマンドが失敗する可能性があるため、実行は避けてください。 ベストプラクティスとして、並列チェーンの数は10未満であるべきです。
- すべてのチェーン・ソリューションは、本番環境または運用環境で使用する前に、エッジケースおよび関連するすべてのデータ型に対して徹底的にテストする必要があります。
- Run Chain の使用状況が 6 レベル以上入れ子になっているチェーンは、正しくエクスポートまたはインポートできない場合があります。
その他のリソース
チェーンコントロールシートの詳細については、他のリソースをレビューしてください。
- さらに基本的な情報については、コントロールシートの使用 をレビューしてください。
- コントロールシートの一般的な使用例については、コントロールシートスケジューラー チェーンテンプレートをレビューしてください。