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

DataWorks:ノード A をコミットすると、ノード A の依存上位ノードの出力名が 존재しない다는エラーがシステムから報告されます。どうすればよいですか?

最終更新日:Jan 11, 2025

問題の説明

ノード A をコミットすると、ノード A の依存上位ノードの出力名が 존재しない다는エラーがシステムから報告されます。The output name of the dependent ancestor node of Node A does not exist.上の図は、エラーの説明に使用されます。このエラーは、ノード A に対して構成された[依存上位ノードの出力名]に基づいて、xc_ods_user_info_d_133 テーブルを生成する上位ノードがシステムで見つからないために発生します。依存関係にある上位ノードの出力名
説明 このエラーは、[ノードの出力名]が 존재しないことを示しています。これは、xc_ods_user_info_d_133 テーブルが 존재しないことを意味するものではありません。代わりに、ノードの出力名を出力として使用するノードがないことを意味します。 xc_ods_user_info_d_133 テーブルが 존재し、ノードによって生成されていても、システムがテーブルをノードの出力に追加しない場合も、エラーが報告されます。

考えられる原因 1: テーブルを生成するノードがない

  • 考えられる原因:

    テーブルを生成するノードがありません。

    ほとんどの場合、システムは自動解析機能を使用して、ノードによって生成されたテーブルをノードの出力に自動的に追加できます。ただし、自動トリガーノード以外のノードによって生成されたテーブルは、この機能をサポートしていません。自動トリガーノード以外のノードは、次のテーブルを生成します。
    • オンプレミス マシンから DataWorks にアップロードされたテーブル
    • ディメンションテーブル
    • DataWorks によってスケジュールされていないノードによって生成されたテーブル
    • 手動でトリガーされたノードによって生成されたテーブル

    ノード用に開発されたコードに、上記のテーブルのいずれかを指定する SELECT ステートメントが含まれている場合、上記のエラーが報告されます。

  • 解決策:

    自動トリガーノード以外のノードによって生成されたテーブルを含む依存関係を削除する必要があります。この例では、依存関係のある上位ノードの出力名xc_ods_user_info_d_133 テーブルを含む[依存上位ノードの出力名]を削除する必要があります。

    スケジューリング依存関係を削除する方法の詳細については、「同サイクル スケジューリング依存関係の構成」をご参照ください。

考えられる原因 2: ノードによって生成されたテーブルがノードの出力に追加されていない

  • 考えられる原因:

    テーブルはノードによって生成されます。ただし、テーブルはノードの出力に追加されません。

    ほとんどの場合、システムは自動解析機能に基づいて、ノードによって生成されたテーブルをノードの出力に自動的に追加できます。ただし、一部のノードはこの機能をサポートしていません。バッチ同期ノード、AnalyticDB for PostgreSQL ノード、AnalyticDB for MySQL ノード、および EMR ノードは、自動解析機能に基づくスケジューリング依存関係の構成をサポートしていません。これらのノードによって生成されたテーブルは、これらのノードの出力に手動で追加する必要があります。

    ノードのコードの SELECT ステートメントが上記のテーブルのいずれかを指定し、テーブルがテーブルを生成するノードの出力に追加されていない場合、上記のエラーが報告されます。

  • 解決策:

    テーブルを生成するノードの出力にテーブルを手動で追加する必要があります。この例では、xc_ods_user_info_d_133 テーブルを、テーブルを生成するノードの[出力]に手動で追加する必要があります。

    スケジューリング依存関係を追加する方法の詳細については、「同サイクル スケジューリング依存関係の構成」をご参照ください。

誤った依存関係構成によって引き起こされるデータエラーを防ぐために、ノードをコミットするときに、システムはテーブルデータ系列の入力と出力をスケジューリング構成の入力と出力と比較します。それらが一致しない場合、システムはエラーメッセージを表示します。詳細については、「ノードをコミットすると、ノードの入力と出力がノード用に開発されたコードのデータ系列と一致しないというエラーがシステムから報告されます。どうすればよいですか?」をご参照ください。

日単位で実行するようにスケジュールされていないノードによって生成されたテーブルデータのノード依存関係を構成する必要はありません。そのような依存関係を構成している場合は、削除できます。この場合、ノードをコミットすると、テーブルデータの系列がスケジューリング構成と一致しないというエラーメッセージがシステムに表示されます。不一致が削除のみによって発生した場合、ノードを強制的にコミットできます。

考えられる原因 3: 複数のノードに出力名が重複している

  • 考えられる原因:
    複数のノードの[出力]名が同じです。これは、次の理由が原因である可能性があります。
    • 複数のノードが同じテーブルを生成する。

      複数のノードが同じテーブルを生成し、ノード用に開発されたコードにテーブルを指定する SELECT ステートメントが含まれている場合、システムはテーブルを生成する一意のノードを見つけることができず、ノードをコミットするとエラーが報告されます。

    • ワークスペースに同じ名前のノードが含まれている。

      ノードを作成すると、システムはノードに 2 つの[出力]を自動的に追加します。1 つは projectname.nodename 形式で名前が付けられます。ワークスペースに同じ名前の 2 つのノードが含まれている場合、これら 2 つのノードの[出力]名は同じになります。この場合、作成したノードをコミットすると、システムはこのエラーを報告します。

  • 解決策:
    コード開発仕様と UI ノードの命名規則に基づいて、ノードの名前を変更する必要があります。
    • テーブルは 1 つのノードのみによって生成され、テーブルはノードの出力として構成する必要があります。
    • 各ノード名は、ワークスペース内で一意である必要があります。
    ノードの名前を変更した後、ノードの[出力]名が異なることを確認してください。