すべてのプロダクト
Search
ドキュメントセンター

DataWorks:ノードコンテキストパラメーターの設定と使用

最終更新日:Dec 19, 2025

ノードコンテキストパラメーターは、DataWorks においてタスクノード間で動的データを渡すためのコアメカニズムです。これにより、上流ノード (プロデューサー) はその出力を 1 つまたは複数の下流ノードに渡すことができます。下流ノードは、これらの値をコード内で参照し、上流ノードの出力に基づいて動的にその動作を調整できます。このプロセスにより、ワークフローの柔軟性と自動化が大幅に向上します。

仕組み

ノードコンテキストパラメーターは、ノード間で値を渡します。上流ノード (プロデューサー) が出力パラメーターを定義し、下流ノード (コンシューマー) がそのパラメーターを参照して値を取得します。

  • 上流ノード (プロデューサー):値を生成し、それを出力パラメーターとして設定します。値は、次の 2 つの方法のいずれかで提供できます。

    • 定数または変数の受け渡し:上流ノードの [ノード出力パラメーター] セクションで、パラメーターを定義し、値を割り当てることができます。値は、'abc' のような定数、または ${status} のようなシステムコンテキスト変数が使用できます。

    • 代入結果の受け渡し:システムは、ノードのコード内の最後のクエリ結果 (例:SELECT 'table_A';) をキャプチャし、それを outputs という名前の組み込み出力パラメーターに割り当てます。このパラメーターの値は、下流ノードに渡されます。値は、実行時のコードの結果に依存します。代入ノードおよび一部の SQL ノードがこの方法をサポートしています。

  • 下流ノード (コンシューマー):上流ノードから提供された値を取得して使用します。

    1. 入力パラメーターの設定:下流ノードの [ノード入力パラメーター] セクションで、入力パラメーターを追加します。パラメーターの値ソースを、上流ノードの出力パラメーターに設定します。

    2. スケジューリング依存関係の確立:入力パラメーターを設定すると、システムは自動的に下流ノードから上流ノードへの同一周期スケジューリング依存関係を作成します。

    3. コード内でのパラメーター参照:下流ノードのコード内で、${InputParameterName} の形式で取得した値を参照します。例えば、上流ノードが値 table_A を渡した場合、下流ノードのコード SELECT * FROM ${input}; は、実行時に SELECT * FROM table_A; となります。

制限事項

  • エディション: 一部のノードは、クエリ結果を渡すために使用される [代入パラメーターの追加] 機能をサポートしています。この機能には、DataWorks Standard Edition 以上が必要です。

  • ノードタイプ[代入パラメーターの追加] 機能をサポートするノードタイプは、EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL、AnalyticDB for PostgreSQL、ClickHouse SQL、およびデータベースノードタイプです。

操作手順

ステップ 1:上流ノードの出力パラメーターの設定

  1. DataWorks コンソールにログインします。ターゲットリージョンに切り替えた後、左側のナビゲーションウィンドウで データ開発と O&M > データ開発 を選択します。ドロップダウンリストから目的のワークスペースを選択し、[Data Studio へ移動] をクリックします。

  2. [Data Studio] ペインで、対象の上流ノードをダブルクリックしてエディターページを開きます。

  3. キャンバスの右側にある [スケジューリング] をクリックします。[入出力パラメーター] セクションで、以下のいずれかの方法で [ノード出力パラメーター] を設定します。

方法 1:定数または変数の受け渡し

  1. [ノード出力パラメーター] セクションで、[パラメーターの追加] をクリックします。

  2. パラメーターを設定します。

    パラメーター

    説明

    パラメーター名

    出力パラメーターのカスタム名です。例:my_param

    パラメーター値

    パラメーターの値です。以下のタイプがサポートされています:

方法 2:代入結果の受け渡し

  1. 代入ノードの使用

    代入ノード (上流ノード) は MaxCompute SQLPython 2、および Shell をサポートしています。最後のクエリまたは出力結果をノードの出力パラメーター (outputs) に自動的に割り当てます。下流ノードはこのパラメーターを参照して、代入ノードの出力を取得できます。詳細については、「代入ノード」をご参照ください。

  2. 代入パラメーターの使用

    代入パラメーターをサポートするノードで、以下の手順を実行します:

    image

    1. [ノード出力パラメーター] セクションで、[代入パラメーターの追加] をクリックします。

    2. システムは自動的に outputs という名前の出力パラメーターを追加します。このパラメーターを設定する必要はありません。その値は、ノードのコード内の最後のクエリ結果になります。

    3. [保存] をクリックします。

      説明

      [割り当てパラメーターの追加] をクリックすると、割り当てパラメーターは現在のノードのクエリ結果を、そのパラメーターを参照する下流ノードに渡します。 結果が空の場合、現在のノードはブロックされませんが、そのパラメーターを参照する下流ノードは失敗する可能性があります。

    使用方法は、代入ノードで MaxCompute 言語を使用する場合と似ています。

重要

出力パラメーターは削除できます。出力パラメーターを削除する前に、下流ノードで使用されていないことを確認してください。そうしないと、それに依存する下流タスクが失敗します。

ステップ 2:下流ノードでのパラメーターの使用設定

  1. 入力パラメーターの設定

    1. 下流ノードのエディターページを開き、[スケジューリング] > [入出力パラメーター] セクションに移動します。[ノード入力パラメーター] セクションで、[パラメーターの追加] をクリックします。

    2. 入力パラメーターを設定します。上流ノードの出力パラメーターを [値ソース] として選択し、現在のノードの [パラメーター値] を指定します。

    3. ツールバーで [保存] をクリックしてパラメーターを追加します。

  2. 依存関係の確立

    入力パラメーターを上流ノードの出力パラメーターにバインドすると、システムは自動的にその上流ノードへの同一周期の依存関係を追加します。手動での設定は不要です。

  3. パラメーターの参照

    下流ノードのコード内で、${InputParameterName} の形式でパラメーターを参照できます。

    次の例は、Shell ノードで入力パラメーター param を参照する方法を示しています:

    echo "The value from upnode is ${param}"

    上流ノードが代入結果を下流ノードに渡す場合、パラメーター値は通常、2次元配列またはカンマ区切りの1次元配列です。次のように配列から値を取得できます:

    • 上流ノードが SQL ノードの場合 (2次元配列):

      • 行:${param}

      • セル:${param[j]}

    • 上流ノードが Python/Shell ノードの場合 (1次元配列):
      行:${param}

    インデックスは 0 から始まります。

ステップ 3:デバッグと実行

コンテキストパラメーターは、ワークフローによってトリガーされる定期インスタンスでのみ、スケジューリング順序に従って渡されます。下流ノードを単独で実行した場合、上流のパラメーターを取得できず、タスクが失敗します。デバッグ時には、上流ノードから開始し、ビジネスプロセスの順序でノードを実行する必要があります。

  1. ワークフローに戻ります。ワークフローの上にあるツールバーで、[実行] をクリックします。または、下流ノードを右クリックして [このノードまで実行] を選択します。

  2. 生成された DAG インスタンスで、ノードをクリックして実行ログを表示し、結果が期待どおりであることを確認します。

システムコンテキスト変数

システム変数

説明

${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}

ノード名。