問題の説明
上の図は、エラーの説明に使用されます。このエラーは、ノード A に対して構成された[依存上位ノードの出力名]に基づいて、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 つのノードのみによって生成され、テーブルはノードの出力として構成する必要があります。
- 各ノード名は、ワークスペース内で一意である必要があります。