症状
ノードを送信すると、依存する先祖ノードの出力名が存在しないというエラーが報告されます。 DataWorks では、ノードを送信すると、ページに次のエラーメッセージが表示されます: The output name test.table_1 of the dependent ancestor node for the current node does not exist. You cannot submit this node. Ensure that the ancestor node that has this output name is submitted. エラーコードは 1201111368 です。 このエラーは、現在のノードの Parent Node Output Name で指定された依存関係に基づいて、システムが出力テーブル xc_ods_user_info_d_133 を生成する上流ノードを見つけられないことを示します。
このエラーは、指定された出力名がいずれかのノードの出力構成に見つからないことを示します。これは、テーブル自体が存在しないことを意味するものではありません。このエラーは、テーブルが存在し、ノードによって生成されているにもかかわらず、そのテーブルがそのノードの [出力] として追加されていない場合にも発生する可能性があります。
原因 1:テーブルを生成するノードが存在しない
原因
ほとんどの場合、DataWorks は自動解析を使用して、生成されたテーブルをノードの出力に追加します。ただし、定期的に生成されないテーブルの場合、自動解析はサポートされていません。例:
ローカルマシンから DataWorks にアップロードされたテーブル
ディメンションテーブル
DataWorks のスケジューリングによって生成されないテーブル
手動でトリガーされたノードによって生成されるテーブル
ノードがこれらのタイプのテーブルから `SELECT` しようとすると、エラーが発生します。
解決策
定期的に生成されないテーブルに対するスケジューリング依存関係は、手動で削除する必要があります。この例では、Parent Node Output Name が
xc_ods_user_info_d_133であるスケジューリング依存関係を削除する必要があります。スケジューリングの依存関係を削除する詳細な手順については、「同一サイクルスケジューリングの依存関係の設定」をご参照ください。
原因 2:テーブルがノードの出力として登録されていない
原因
DataWorks はほとんどのノードで自動解析を使用して出力を追加しますが、この機能は特定のノードタイプではサポートされていません。バッチ同期、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、EMR などのノードタイプでは、それらが生成するテーブルを出力として手動で追加する必要があります。
下流ノードがこれらのノードのいずれかによって生成されたテーブルから `SELECT` しようとしたときに、そのテーブルが生成元ノードの出力に手動で追加されていない場合、このエラーが発生します。
解決策
それを生成するノードの出力として、テーブルを手動で追加する必要があります。 この例では、
xc_ods_user_info_d_133を、それを生成するノードの [出力] として手動で追加します。出力を追加した後、スケジューリングの依存関係を正しく設定できます。詳細な手順については、「同一サイクルスケジューリングの依存関係の設定」をご参照ください。
誤った依存関係の設定によるデータの問題を防ぐため、DataWorks はノードをコミットする際に、データリネージからの入力と出力をスケジューリング設定からのものと比較します。これらが一致しない場合、システムは警告を表示します。詳細については、「ノードのコミットエラー:入力/出力とデータリネージの不一致」をご参照ください。
DataWorks の日次スケジューリングによって生成されないテーブルについては、スケジューリングの依存関係を設定する必要はありません。これらの依存関係は削除できます。このような依存関係を削除した後にノードをコミットすると、データリネージとスケジューリング設定の不一致に関する警告がシステムから表示されることがあります。不一致が削除した依存関係のみである場合は、ノードを安全に強制コミットできます。
原因 3:ノードの出力名が重複している
原因
この問題は、複数のノードが同じ[出力]名を持つ場合に発生します。これには、2 つのシナリオがあります。
複数のノードが同じテーブルを生成する。
複数のノードが同じテーブルを生成する場合、別のノードがそのテーブルから `SELECT` しようとしても、システムは一意のソースノードを特定できません。この曖昧さが原因でコミットが失敗します。
ワークスペース内に同じ名前のノードが存在する。
ノードを作成すると、システムによって 2 つの [出力] が自動的に追加されます。そのうちの 1 つは、
workspacename.nodenameという命名規則に従います。同じワークスペース内の 2 つのノードが同じ名前を持つ場合、自動生成される [出力] 名が同一になり、コミット時にこのエラーが発生します。
解決策
これを解決するには、標準的な開発規約と命名規則に従う必要があります:
テーブルは 1 つのノードのみによって生成され、このテーブルはそのノードの出力として登録されなければなりません。
ノード名はワークスペース内で一意でなければなりません。
これらの変更を行った後、ノード間で [出力] 名が重複しないことを確認してください。