Assignment ノードは特別なノードです。 ノードにコードを記述して値を出力パラメーターに割り当て、ノードコンテキストと共にそれらを参照用の子ノードに渡すことができます。
注 Assignmentノードは、DataWorks Standard Edition 以降でのみ使用できます。
Assignment ノードの作成
- DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、ワークスペースをクリックします。 ワークスペースページでノードを作成するワークスペースを探し、アクション列の [データ分析] をクリックします。
- 表示される [データ分析] タブで、ポインターをアイコンに移動し、
または、左側のナビゲーションペインでワークフローをクリックし、[全般] を右クリックして、 をクリックします。
をクリックします。
- 表示される[ノードの作成] ダイアログボックスで、ノード名と地域を設定します。
注 ノード名は 1 文字から 128 文字である必要があります。
- [コミット] をクリックします。
割り当てロジックの値の書き込み
Assignment ノードには、output という名前の固定出力パラメーターがあります。 このパラメーターに関する情報は、プロパティタブのパラメーターセクションで見ることができます。 言語ドロップダウンリストから [ODPS SQL]、[SHELL]、または [Python] をクリックして、コードを記述して値をパラメーターに割り当てます。 出力パラメーターの値は、対応するコードの実行後に計算することができます。 1 つの Assignment
ノードに 1 つの言語のみ指定することができます。
output パラメーターには次の制限があります。
- 出力パラメーターの値は、コードの最終行の出力からのみ取得されます。
- ODPS SQL の場合、最後の行の SELECT ステートメントの出力を使用します。
- SHELL の場合、最後の行の ECHO ステートメントの出力を使用します。
- Python の場合、最後の行の PRINT ステートメントの出力を使用します。
- outputs パラメーターの渡された値のサイズは 2 MBに 制限されています。 割り当てステートメントの出力がこの制限を超える場合、割り当てノードは実行に失敗します。
Assignment ノードを親ノードとして使用する
Assignment ノードをノードの親ノードとして追加した後、ノードコンテキストで子ノードの入力パラメーターとして割り当てノードの出力を定義することができます。 子ノードのコードで定義された入力パラメーターを参照します。 このようにして、子ノードは割り当てノードの出力から特定の値を取得することができます。 詳細については、「コンテキストベースのパラメーター」をご参照ください。
Assignment ノードの例
- ワークフローの作成 詳細については、「ワークフローの作成」をご参照ください。
- 2 つのシェルノードと 4 つのAssignment ノードを作成します。 ワークフローダッシュボードで、次の図に示すように、ノード間に線を引いて依存関係を構成します。
- 割り当てノードを設定すると、出力パラメーターはデフォルトで自動的に追加されます。 Assignment ノードを実行した後、パラメーター値をプロパティタブのパラメーターセクションに表示することができます。
- 親ノードの outputs パラメーターを子ノードの入力パラメーターとして定義します。
Assignment ノードの実行
注 上記の設定は、オペレーションセンターで遡及データを生成することで有効になりますが、テスト中には有効になりません。
- ワークフローでノードを設定した後、スケジューリングのためにノードをコミットします。 一般に、ノードインスタンスは生成され、翌日に実行されます。
- インスタンスの実行中に、有向非巡回グラフ (DAG) のノードを右クリックして、 [ノードの詳細を表示する] をクリックして、入力および出力パラメーターを表示します。
- 実行時ログでは、finalResult でコードの最終出力を表示することができます。
概要
注 outputs パラメーターの値は、コードの最終行の出力です。
本ページでは、ODPS SQL、SHELL、および Python を使用して割り当てノードのコードを記述し、割り当てノードによって生成される配列をシェルノードの input パラメーターとして定義します。
- ODPS SQL:Assignment ノードの出力は、1 次元または 2 次元の配列です。
この例では、クエリの結果は 2 次元配列です。
2,this is name6 1,this is name5
次の図は、シェルノードの出力コードを示しています。次の図は、シェルノードの出力を示しています。 - SHELL:Assignment ノードの出力は 1 次元配列です。
次の図は、シェルノードの出力コードを示しています。次の図は、シェルノードの出力を示しています。
- Python:Assignment ノードの出力は 1 次元配列です。
次の図は、シェルノードの出力コードを示しています。次の図は、シェルノードの出力を示しています。