Macro Concurrent ステップ
呼び出し元側のドライバーテーブルで選択した行ごとに、マクロを1回ずつ実行します。各子呼び出しは Macro Run ステップと同じように動作します。
- 新しい
run_idが割り当てられます。 - 専用のスクラッチスキーマ(
macrorun_<run_id>)で実行されます。 - 呼び出し元から、テーブル、スカラー、ディメンションのバインディングを受け取ります。
- 子呼び出しが
doneまたはwarnで終了すると、宣言された出力テーブルを呼び出し元側の宛先にコピーします。 - 子呼び出しが終了、失敗、または停止すると、スクラッチスキーマを削除します。
同じ再利用可能な処理を多数の行に対して実行する場合は、Macro Concurrent ステップを使用します。たとえば、ドライバーテーブルの1行につき1つの期間、エンティティ、顧客、ファイルバッチ、地域を処理する場合です。
- テーブル — マクロの呼び出し1回につき1行を持つ、呼び出し元側のテーブルです。
- 同時実行数 — 同時にアクティブにしておく子マクロ呼び出しの最大数です。
テーブルデータの選択
Section titled “テーブルデータの選択”各子呼び出しで必要となるドライバーテーブルの列を選択します。これらの列は、マクロのバインディングとドライバーフィルターで使用できます。
ドライバーフィルター
Section titled “ドライバーフィルター”必要に応じて、ドライバーテーブルにフィルタールールを追加します。一致する行だけが子マクロ呼び出しを起動します。
- プロジェクト — マクロを含むプロジェクトです。v1では、呼び出し元と同じプロジェクトである必要があります。
- マクロ — 選択した各ドライバー行に対して呼び出すマクロワークフローです。
入力バインド
Section titled “入力バインド”入力バインドは、呼び出し元側のデータをマクロで宣言された入力に接続します。
テーブル入力バインド:
- 呼び出し元のソーステーブル — 子呼び出しのスクラッチスキーマにコピーされるテーブルです。
- マクロのターゲットポート — コピーしたテーブルを受け取るマクロの入力テーブル名またはポートです。
- コピーインのフィルター — コピーイン時に適用する任意の
WHERE句です。 - 列のJSON — 選択した列だけをコピーする場合に指定する、任意のJSON列プロジェクションです。
スカラーおよびディメンションの入力バインド:
- マクロ変数 — 子呼び出しに対して設定するマクロ側の変数です。
- 値 — バインドするリテラル値、呼び出し元の変数参照、またはドライバー列の値です。
スカラーおよびディメンションの入力はテーブルのコピーインより前に設定されるため、テーブルフィルターからこれらの変数を参照できます。
出力バインド
Section titled “出力バインド”出力バインドは、マクロの結果テーブルを呼び出し元側の宛先にコピーして戻します。
- マクロのソースポート — コピー元となるマクロの出力テーブル名またはポートです。
- 呼び出し元の宛先テーブル — コピー先となる呼び出し元側のテーブルです。
- 列のJSON — コピーアウト時に指定する、任意のJSON列プロジェクションです。
すべてのドライバー行は、それぞれ異なる宛先テーブルに解決される必要があります。そのため、宛先名にドライバー列を含めてください(例: results_{region})。コピーアウトは宛先に追記せず置き換えるため、2つの行が同じ宛先に解決されると、2番目の行の結果だけが残ります。ステップは、何かを起動する前にそのような構成を拒否します。結果を1つのテーブルにまとめるには、行ごとのテーブルを結合する下流のステップを追加します。
停止した子呼び出しではコピーアウトがスキップされるため、部分的な結果が永続的な呼び出し元のテーブルに書き込まれることはありません。
子呼び出しが応答しなくなった場合
Section titled “子呼び出しが応答しなくなった場合”子呼び出しは終了時に自身の結果を報告するため、マシンが予告なく停止した子呼び出しは何も報告しません。ステップは、そのような子呼び出しを無期限に待ち続ける代わりに、待機中の各子呼び出しが動作しているかどうかを確認します。
- 開始済みの子呼び出しは、進行の兆候がない間に限り、約1分ごとに確認されます。長時間かかる単一のステップを処理している子呼び出しは、そのステップにかかる時間だけ進行の兆候を示しませんが、実際に実行中である限りそのまま放置されます。
- 受け付けられてから15分以内に開始されなかった子呼び出しは、開始されなかったものとして扱われます。この時間は、スケジューリングとイメージのプルを対象とするもので、マクロ自体の処理は含みません。
いずれかの扱いになった子呼び出しは停止され、そのスクラッチスキーマが削除されます。ステップは最後に失敗し、その呼び出し、最後に報告された状態、およびその報告時刻を示します。
ほかの子呼び出しには影響しません。 それらは最後まで実行され、出力テーブルも通常どおり書き込まれるため、多数の子呼び出しのうち1つが応答しなくなっても、残りの結果は破棄されません。失敗として示されるのは、完了できなかった呼び出しだけです。
確認自体に応答が得られない場合(たとえば、プラットフォームに一時的に接続できない場合)、子呼び出しは実行中のものとして扱われ、次回のパスで再び確認されます。
停止時の動作
Section titled “停止時の動作”親の Macro Concurrent ステップを停止すると、アクティブなすべての子マクロ呼び出しが停止され、アクティブな各実行スキーマが削除されます。まだ開始されていない子呼び出しは、親の停止後に起動されません。
- Create a Macro — ワークフローをマクロとして宣言し、そのポートコントラクトを定義します。
- Macro Run ステップ — マクロを1回呼び出します。