DataWorks のノードは分離して実行されるため、メモリや状態を直接共有することはできません。入力パラメーターと出力パラメーターを使用すると、ノードは定数、変数、またはクエリ結果などの値を実行時に下流ノードに渡すことができ、パイプライン全体で動的なスケジューリングが可能になります。
仕組み
上流ノードは 出力パラメーター とその値を宣言します。下流ノードは、その出力を参照する入力パラメーターを宣言します。パイプラインが実行されると、DataWorks は参照を解決し、上流の値を下流ノードに挿入します。
全体の流れは次のようになります:
上流ノード → 出力パラメーターを定義 → 依存関係リンク (出力名) → 下流ノード → 入力パラメーターを宣言 → コード内で ${parameter_name} として値を参照
パラメータータイプの選択
DataWorks は、ノード間でデータを渡すための 2 つの方法をサポートしています:
| メソッド | 仕組み | 使用シーン |
|---|---|---|
| 標準出力パラメーター | 定数文字列または変数 (スケジューリングパラメーター、グローバル変数) を渡します | 日付、ID、設定値、またはその他の小さなスカラー値を渡す場合 |
| 代入出力パラメーター | 現在のノードのクエリ結果を渡します | SQL クエリの結果セットを下流ノードに渡す場合 |
制限事項:
[代入パラメーターの追加] オプションには、DataWorks Standard Edition 以上が必要です。
ノードが結果を生成しない場合でも、ノードは成功しますが、代入パラメーターを参照する下流ノードは失敗する可能性があります。
代入パラメーターをサポートしているのは、EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL、AnalyticDB for PostgreSQL、ClickHouse SQL、MySQL のノードタイプのみです。他のノードタイプでは、代わりに 代入ノード を使用してください。
前提条件
開始する前に、以下を確認してください:
上流・下流関係にある少なくとも 2 つのノードを持つ DataWorks ワークスペース
DataWorks Standard Edition 以上 (代入パラメーターにのみ必要)
パラメーター設定セクションを開く
DataWorks コンソールにログインします。上部のナビゲーションバーで、対象のリージョンを選択します。左側のナビゲーションウィンドウで、[データ開発と O&M] > [データ開発] を選択します。ドロップダウンリストからご利用のワークスペースを選択し、[データ開発へ] をクリックします。
[データスタジオ] ページで、ノードをダブルクリックしてエディターを開きます。
右側のペインで [プロパティ] をクリックします。[入力パラメーターと出力パラメーター] セクションで、
アイコンをクリックします。
出力パラメーターの設定
標準出力パラメーターの設定
標準出力パラメーターは、現在のノードから下流ノードへ定数または変数を渡します。
[入力パラメーターと出力パラメーター] セクションで、現在のノードの出力パラメーターを設定できます。以下のフィールドに入力します:
| フィールド | 説明 |
|---|---|
| No. | 自動生成されるシーケンス番号。 |
| パラメーター名 | 出力パラメーターのカスタム名。 |
| タイプ | [定数] または [変数] を選択します。 |
| 値 | 渡す値。定数は固定文字列です。変数は、システムのグローバル変数、組み込みのスケジューリングパラメーター、または ${...} や $[...] 形式のカスタムパラメーターにすることができます。 |
| 説明 | パラメーターの簡単な説明。 |
| 追加方法 | パラメーターの追加方法:[自動追加]、[コード解析]、または [手動追加]。 |
| アクション | [保存]、[変更]、または [削除] します。 |
[アクション] 列の [保存] をクリックします。
代入出力パラメーターの設定
代入出力パラメーターは、現在のノードのクエリ結果を下流ノードに渡します。
[入力パラメーターと出力パラメーター] > [出力パラメーター] セクションで、[代入パラメーターの追加] をクリックします。システムは、クエリ結果を参照する任意の下流ノードに渡すようにパラメーターを自動的に設定します。
パラメーターが作成された後、[依存関係] > [現在のノードの出力名] に移動して、生成された出力名を見つけます。この出力の [追加モード] は [自動追加] です。下流ノードは、この出力名を使用して現在のノードへの依存関係を宣言します。
入力パラメーターの設定
入力パラメーターを使用すると、下流ノードは上流の出力パラメーターから値を取得して使用できます。上流の出力パラメーターと依存関係の両方が設定された後に、これらを設定します。
ステップ 1:上流ノードでの出力パラメーターの設定
「出力パラメーターの設定」の手順に従い、上流ノードが渡す値を定義します。
ステップ 2:依存関係の確立
下流ノードのエディターを開き、右側のペインで [プロパティ] をクリックします。
[依存関係] > [親ノード] セクションで、上流ノードの出力パラメーターの [出力名] を入力して選択します。
[作成] をクリックします。
ステップ 3:入力パラメーターの追加
下流ノードの [入力パラメーターと出力パラメーター] セクションで、[作成] をクリックし、以下のフィールドに入力します:
| フィールド | 説明 |
|---|---|
| No. | 自動生成されるシーケンス番号。 |
| パラメーター名 | 入力パラメーターのカスタム名。この名前を使用して、ノードのコード内で値を参照します。 |
| 値のソース | 値は上流ノードの出力パラメーターから取得されます。 |
| 説明 | パラメーターの簡単な説明。 |
| 親ノード ID | 上流ノードから自動的に解析されます。 |
| 追加方法 | パラメーターの追加方法:[自動追加]、[コード解析]、または [手動追加]。 |
| アクション | [保存]、変更、または[削除]します。 |
[アクション] 列の [保存] をクリックします。
ノードコードでの入力パラメーターの使用
ノードコード内で入力パラメーターを参照するには、${parameter_name} を使用します。この構文は、他のスケジューリングパラメーターと同じです。
次の例は、Shell ノードで入力パラメーターを参照する方法を示しています:

個々のノードではなく、ワークフロー全体を実行してください。下流ノードを単独で実行すると、入力パラメーターを解決できず、実行は失敗します。
システムがサポートするグローバル変数
[変数] タイプの出力パラメーターの値として、以下のグローバル変数を使用できます:
システム変数
| 変数 | 説明 |
|---|---|
${projectId} | プロジェクト ID。 |
${projectName} | MaxCompute プロジェクト名。 |
${nodeId} | ノード ID。 |
${gmtdate} | スケジュールされた実行日の 00:00:00、yyyy-MM-dd 00:00:00 形式。 |
${taskId} | タスクインスタンス ID。 |
${seq} | 同じ日に同じノードのすべてのインスタンスの中でのタスクインスタンスのシーケンス番号。 |
${cyctime} | インスタンスのスケジュール時刻。 |
${status} | インスタンスステータス:SUCCESS または FAILURE。 |
${bizdate} | ビジネス日付。 |
${finishTime} | インスタンスの完了時刻。 |
${taskType} | 実行タイプ:NORMAL、MANUAL、PAUSE、SKIP、UNCHOOSE、または SKIP_CYCLE。 |
${nodeName} | ノード名。 |
他のスケジューリングパラメーターの形式については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。
次のステップ
代入ノード — 専用の代入ノードを使用してノード間でクエリ結果を渡す
サポートされているスケジューリングパラメーターの形式 — スケジューリングパラメーターの構文に関する完全なリファレンス