DataWorks V2.0 では、スケジューリング依存関係を設定するときに、タスク間の依存関係を、関連項目として現在のノードの出力名に従って設定する必要があります。 本ページでは、タスクスケジューリングの依存関係の入出力を設定する方法について詳しく説明します。

タスクのノード入力を設定する方法

ノード入力を設定する方法は 2 つあります。1 つは自動コード解析機能を使用してタスクの依存関係を解決する方法、もう 1 つは手動でタスクの依存関係を入力する方法 (手動で Upstream Node Output Name を入力) です。
上流ノードを手動で入力するとき、入力は親ノードの Output Name です。 親ノードのタスク名が親ノードの出力名と一致しない場合、必ずノードの出力名を正しく入力してください。
上流のノードを設定するとき、自動的に解析される上流のノードで問題が発生する可能性がありますが、それは無効な上流の依存関係です。 依存関係が有効かどうかを識別する方法: 次の図に示すように、解析された上流の依存関係を表示し、その値が [Upstream Node ID] 列に表示されているかどうかを確認します。タスク依存関係の設定は、基本的に 2 つのノード間の依存関係を設定することです。 存在するノードのみが有効な依存関係を設定でき、タスク依存関係が正常に設定されます。

無効な上流の依存関係

無効な上流の依存関係は通常、2 つの場合です。
  1. 親ノードが存在しない。
  2. 親ノード出力が存在しない。
無効な上流の依存関係は、通常、解析された親ノードの出力名が存在しないために発生します。 この場合、テーブル "project_b_name.pm_table_b" がタスクを出力しない、またはノード出力がテーブル出力タスクに対して正しく設定されておらず解析できないことが原因である可能性があります。 2 つの解決策があります。
  1. テーブルに出力タスクがあることを確認します。
  2. このテーブルの出力タスクの出力名を確認し、ノードの出力名を依存する上流ノードに手動で入力します。
上流ノードを手動で入力するときは、親ノードの出力名を入力します。 親ノードのタスク名が親ノードの出力名と一致しない場合、必ずノードの出力名を正しく入力してください。

たとえば、上流ノード A の出力名は A1 で、下流ノード B はノード A に依存するとします。この時点で、上流ノードの入力ボックスに「A1」と入力し、右側にあるプラス記号をクリックして追加します。

上流の依存関係の設定方法

テーブルがソースライブラリから抽出され、上流がない場合、[Use The Workspace Root Node] をクリックして上流の依存関係を取得できます。

タスクのノード出力の設定方法

ノード出力を効率的に設定する最も簡単な方法は、ノード名、ノード出力名、およびノード出力テーブル名が同じ名前を 1 つずつ共有 (スリーインワン) することです。 利点は以下のとおりです。

  1. このタスクがどのテーブルで動作しているかをすぐに知ることができます。
  2. 失敗した場合にこのタスクがどの程度影響を与えるかを素早く知ることができます。
  3. 自動解析を使用してタスクの依存関係を設定すると、ノード出力がスリーインワンのルールと一致している限り、自動解析の精度パフォーマンスが大幅に向上します。

自動解析

自動解析: コードによってスケジューリング依存関係を自動的に解析します。 実装原理: コード内で取得できるのはテーブル名のみです。自動解析機能ではテーブル名に従って対応する出力タスクを解析できます。

たとえば、タイプノードコードは次のとおりです。
INSERT OVERWRITE TABLE pm_table_a SELECT * FROM project_b_name.pm_table_b;
解析された依存関係は以下のとおりです。DataWorksは、このノードが pm_table_b を出力し、ノード pm_table_a の最終出力を出力するために project_b_name に依存する必要があるノードを自動的に解析できます。 したがって、解決策は、親ノードの出力名が project_b_name.pm_table_b、ノードの出力名がproject_name.pm_table_a (プロジェクト名はMaxCompute_DOC) です。
  • コードから解析された依存関係を使用しない場合は、[No] を選択します。
  • 一時テーブルであるテーブルがコードに多数ある場合: たとえば、t_ で始まるテーブルは一時テーブルです。 その場合、テーブルはスケジュール依存関係として解析されません。 一時テーブルの定義では、テーブルがどのフォームで始まるかをプロジェクト設定により一時テーブルとして定義できます。
  • コード内のテーブルが出力テーブルと参照先テーブル (依存テーブル) の両方である場合、それは出力テーブルとしてのみ解析されます。
  • コード内のテーブルが複数回参照または出力された場合、スケジューリング依存関係は 1 つだけ解析されます。
デフォルトでは、名前が t_ で始まるテーブルは一時テーブルとして認識されます。 自動解析は一時テーブルを解決しません。 名前が t_ で始まるテーブルが一時テーブルではない場合、プロジェクト管理者に連絡してプロジェクト設定で変更してください。

テーブルの入出力の削除方法

データ開発中に、しばしば静的テーブルが使われます (データはローカルファイルからテーブルにアップロードされます)、この静的データは実際にはタスクを出力しません。 現時点では、依存関係を設定するとき、静的テーブルの入力を削除する必要があります。静的テーブルが t_ のフォームを満たさない場合、一時テーブルとして処理されません。その場合は静的テーブルの入力を削除する必要があります。

コードでテーブル名を選択し、[Remove Input] をクリックします。DataWorks から DataWorks V2.0 にアップグレードする場合、移行された DataWorks タスクのノード出力はデフォルトで ProjectName.NodeName に設定されます。

注意事項

タスク依存関係の設定が完了すると、送信されたウィンドウに、入出力がコード分析と一致しない場合、送信を続行するかどうかを確認するオプションが表示されます。

このオプションでは、依存関係が正しいことを確認したという前提に立っています。 確認できない場合は、上記の説明に従って依存関係を確認できます。