ノードコンテキスト機能は、上流ノードと下流ノード間でパラメーターを自動的に渡します。サポートされているパラメータータイプには、定数、変数、および上流ノードからのクエリ結果が含まれ、動的なタスクスケジューリングと実行を可能にします。
制限事項
製品エディション:割り当てパラメーターの追加機能 (クエリ結果を渡すために使用) は、DataWorks Standard Edition 以上でのみ利用可能です。
ノードタイプの制限:特定のノードタイプのみが、割り当てパラメーターを使用したクエリ結果の受け渡しをサポートしています。サポートされているタイプには、EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL、AnalyticDB for PostgreSQL、ClickHouse SQL、および MySQL ノードが含まれます。
仕組み
ノードコンテキストパラメーターは、上流ノード (プロバイダー) で出力パラメーターを定義し、下流ノード (コンシューマー) でそれを参照することによって値を渡します。
上流ノード (プロバイダー):値を生成し、それを出力パラメーターとして渡します。値は、次の 2 つの方法のいずれかで提供できます。
標準出力パラメーターの設定:上流ノードの [出力パラメーター] セクションでパラメーターを定義し、それに値を割り当てます。値は、
'abc'のような定数、または${status}のようなシステムコンテキスト変数にすることができます。割り当て出力パラメーターの設定:システムは、ノードのコード内の最後のクエリの結果 (例:
SELECT 'table_A';) をキャプチャし、それをoutputsという名前の組み込み出力パラメーターに割り当てます。このパラメーターの値は、下流ノードに渡されます。パラメーターの値は、コードの実行結果に依存します。この方法は、代入ノードおよび一部の SQL ベースのノードでサポートされています。
下流ノード (コンシューマー):上流ノードから提供された値を受け取り、使用します。
スケジューリング依存関係の確立:上流ノードに対するスケジューリング依存関係を設定します。
入力パラメーターの設定:下流ノードの [入力パラメーター] セクションで入力パラメーターを追加し、その値のソースを上流ノードの出力パラメーターに設定します。
コードでの値の参照:下流ノードのコードで、受け取った値を
${input_parameter_name}の形式で参照します。たとえば、上流ノードが値table_Aを渡した場合、コードSELECT * FROM ${input};はランタイムにSELECT * FROM table_A;に解決されます。
パラメーター設定エリアへのアクセス
DataWorks コンソールにログインし、目的のリージョンに切り替え、左側のナビゲーションウィンドウで を選択します。ドロップダウンリストからターゲットワークスペースを選択し、入力データ開発 をクリックします。
Data Studio パネルで、ターゲットノードをダブルクリックして編集ページを開きます。
右側の [プロパティ] をクリックし、[ノードコンテキスト] セクションの右側にある
をクリックして、ノードコンテキストパラメーター設定エリアに入ります。
出力パラメーターの設定
現在のノードの出力パラメーターをノードコンテキストエリアで設定する際、ビジネス要件に基づいて設定できます。
標準出力パラメーターの設定:現在のノードの出力パラメーターとして設定された定数または変数を下流ノードに渡します。
割り当て出力パラメーターの設定:現在のノードのクエリ結果を出力パラメーターとして設定し、下流ノードに渡します。
標準出力パラメーターの設定
上流ノードで設定されたパラメーター情報を下流ノードに渡すには、以下の内容をご参照ください。
パラメーター | 説明 |
いいえ。 | 番号はシステムによって制御され、自動的にインクリメントされます。 |
パラメーター名 | 出力パラメーターのカスタム名を指定します。 |
タイプ | 定数と変数をサポートしています。ビジネス要件に基づいてタイプを選択できます。 |
値 | 出力パラメーターの値です。サポートされている値のタイプには、定数と変数が含まれます:
|
説明 | パラメーターの簡単な説明です。 |
ソース | 現在のパラメーターのソースです。 オプションには、[システム追加]、[コードから解析]、[手動追加] があります。 |
操作 | [保存]、[編集]、[削除] の操作をサポートしています。 説明 下流ノードがパラメーターに依存している場合、編集と削除はサポートされていません。下流ノードが上流ノードを参照する前に、上流の出力が正しく定義されていることを注意深く確認してください。 |
パラメーターを設定した後、[操作] 列の [保存] をクリックします。
割り当て出力パラメーターの設定
現在のタスクのクエリ結果をパラメーターとして下流タスクに渡すには、以下の内容をご参照ください。
ノードの セクションを見つけます。
[割り当てパラメーターの追加] をクリックして、ワンクリックで出力割り当てパラメーターを追加します。
[割り当てパラメーターの追加] をクリックすると、割り当てパラメーターは現在のノードのクエリ結果を、そのパラメーターを参照する下流ノードに渡します。結果が空の場合、現在のノードはブロックされませんが、パラメーターを参照する下流ノードは失敗する可能性があります。
下流ノードは、上流ノードの割り当てパラメーターを入力パラメーターとして追加する必要があります。その使用方法は、代入ノードの使用方法と似ています。詳細については、「代入ノード」をご参照ください。
現在のノードの出力パラメーターを設定した後、設定ページの でシステムによって追加された出力名を表示できます。下流ノードは、この出力名を使用して、現在のノードとの依存関係をバインドできます。
入力パラメーターの設定
現在のノードの入力パラメーターをノードコンテキストエリアで設定します。これにより、上流ノードから出力パラメーターを取得して現在のノードで使用できます。
ノードの入力パラメーターを使用して、その上流ノードの出力パラメーターを取得できます。入力パラメーターを追加した後、スケジューリングパラメーター変数をコードで使用するのと同じ方法で、現在のノードのコードでそれを使用できます。
現在のノードが上流ノードに依存するように設定された後でのみ、その上流ノードの出力を現在のノードの入力パラメーターとして [入力パラメーター] エリアに追加できます。
上流ノードで出力パラメーターが設定されていること。詳細は、「出力パラメーターの設定」をご参照ください。
上流と下流の依存関係を設定します。
下流ノードの編集ページで、右側の [プロパティ] をクリックします。
の [ノード出力] の後のダイアログボックスで、「出力パラメーターの設定」で上流ノードを設定したときに指定した出力名を入力して選択します。
[追加] をクリックします。
下流ノードで入力パラメーターを設定します。
[ノードコンテキスト] エリアで、[入力パラメーターの追加] をクリックします。次の表に基づいてパラメーターを設定します。
パラメーター
説明
番号
番号はシステムによって制御され、自動的にインクリメントされます。
パラメーター名
入力パラメーターのカスタム名を指定します。後で、ノード編集ページでこのパラメーター名を使用して、上流から渡されたパラメーター情報を参照できます。
値のソース
パラメーターの値は、上流ノードの出力パラメーターから取得されます。実際の値は、上流ノードの実際の出力結果です。
説明
パラメーターの簡単なカスタム説明を入力できます。
親ノード ID
上流ノードから自動的に解析されます。
ソース
現在のパラメーターのソースです。
オプションには、[システム追加]、[コードから解析]、[手動追加] があります。
操作
[保存]、[編集]、[削除] の操作をサポートしています。
パラメーターを設定した後、[操作] 列の [保存] をクリックします。
下流ノードでの入力パラメーターの使用
ノードで定義された入力パラメーターを使用するには、他のシステム変数と同様に、${input_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}
ノード名。
他のパラメーター設定については、「スケジューリングパラメーターのフォーマット」をご参照ください。