コンテンツにスキップ

呼び出し元側のドライバーテーブルで選択した行ごとに、マクロを1回ずつ実行します。各子呼び出しは Macro Run ステップと同じように動作します。

  • 新しい run_id が割り当てられます。
  • 専用のスクラッチスキーマ(macrorun_<run_id>)で実行されます。
  • 呼び出し元から、テーブル、スカラー、ディメンションのバインディングを受け取ります。
  • 子呼び出しが done または warn で終了すると、宣言された出力テーブルを呼び出し元側の宛先にコピーします。
  • 子呼び出しが終了、失敗、または停止すると、スクラッチスキーマを削除します。

同じ再利用可能な処理を多数の行に対して実行する場合は、Macro Concurrent ステップを使用します。たとえば、ドライバーテーブルの1行につき1つの期間、エンティティ、顧客、ファイルバッチ、地域を処理する場合です。

  • テーブル — マクロの呼び出し1回につき1行を持つ、呼び出し元側のテーブルです。
  • 同時実行数 — 同時にアクティブにしておく子マクロ呼び出しの最大数です。

各子呼び出しで必要となるドライバーテーブルの列を選択します。これらの列は、マクロのバインディングとドライバーフィルターで使用できます。

必要に応じて、ドライバーテーブルにフィルタールールを追加します。一致する行だけが子マクロ呼び出しを起動します。

  • プロジェクト — マクロを含むプロジェクトです。v1では、呼び出し元と同じプロジェクトである必要があります。
  • マクロ — 選択した各ドライバー行に対して呼び出すマクロワークフローです。

入力バインドは、呼び出し元側のデータをマクロで宣言された入力に接続します。

テーブル入力バインド:

  • 呼び出し元のソーステーブル — 子呼び出しのスクラッチスキーマにコピーされるテーブルです。
  • マクロのターゲットポート — コピーしたテーブルを受け取るマクロの入力テーブル名またはポートです。
  • コピーインのフィルター — コピーイン時に適用する任意の WHERE 句です。
  • 列のJSON — 選択した列だけをコピーする場合に指定する、任意のJSON列プロジェクションです。

スカラーおよびディメンションの入力バインド:

  • マクロ変数 — 子呼び出しに対して設定するマクロ側の変数です。
  • 値 — バインドするリテラル値、呼び出し元の変数参照、またはドライバー列の値です。

スカラーおよびディメンションの入力はテーブルのコピーインより前に設定されるため、テーブルフィルターからこれらの変数を参照できます。

出力バインドは、マクロの結果テーブルを呼び出し元側の宛先にコピーして戻します。

  • マクロのソースポート — コピー元となるマクロの出力テーブル名またはポートです。
  • 呼び出し元の宛先テーブル — コピー先となる呼び出し元側のテーブルです。
  • 列のJSON — コピーアウト時に指定する、任意のJSON列プロジェクションです。

すべてのドライバー行は、それぞれ異なる宛先テーブルに解決される必要があります。そのため、宛先名にドライバー列を含めてください(例: results_{region})。コピーアウトは宛先に追記せず置き換えるため、2つの行が同じ宛先に解決されると、2番目の行の結果だけが残ります。ステップは、何かを起動する前にそのような構成を拒否します。結果を1つのテーブルにまとめるには、行ごとのテーブルを結合する下流のステップを追加します。

停止した子呼び出しではコピーアウトがスキップされるため、部分的な結果が永続的な呼び出し元のテーブルに書き込まれることはありません。

子呼び出しが応答しなくなった場合

Section titled “子呼び出しが応答しなくなった場合”

子呼び出しは終了時に自身の結果を報告するため、マシンが予告なく停止した子呼び出しは何も報告しません。ステップは、そのような子呼び出しを無期限に待ち続ける代わりに、待機中の各子呼び出しが動作しているかどうかを確認します。

  • 開始済みの子呼び出しは、進行の兆候がない間に限り、約1分ごとに確認されます。長時間かかる単一のステップを処理している子呼び出しは、そのステップにかかる時間だけ進行の兆候を示しませんが、実際に実行中である限りそのまま放置されます。
  • 受け付けられてから15分以内に開始されなかった子呼び出しは、開始されなかったものとして扱われます。この時間は、スケジューリングとイメージのプルを対象とするもので、マクロ自体の処理は含みません。

いずれかの扱いになった子呼び出しは停止され、そのスクラッチスキーマが削除されます。ステップは最後に失敗し、その呼び出し、最後に報告された状態、およびその報告時刻を示します。

ほかの子呼び出しには影響しません。 それらは最後まで実行され、出力テーブルも通常どおり書き込まれるため、多数の子呼び出しのうち1つが応答しなくなっても、残りの結果は破棄されません。失敗として示されるのは、完了できなかった呼び出しだけです。

確認自体に応答が得られない場合(たとえば、プラットフォームに一時的に接続できない場合)、子呼び出しは実行中のものとして扱われ、次回のパスで再び確認されます。

親の Macro Concurrent ステップを停止すると、アクティブなすべての子マクロ呼び出しが停止され、アクティブな各実行スキーマが削除されます。まだ開始されていない子呼び出しは、親の停止後に起動されません。

  • Create a Macro — ワークフローをマクロとして宣言し、そのポートコントラクトを定義します。
  • Macro Run ステップ — マクロを1回呼び出します。