問題の説明
ノードをコミットすると、ノードの入力と出力が、ノード用に開発されたコードのデータ系列と一致しないというエラーがシステムによって報告されます。

考えられる原因
SELECT ステートメントで指定されたテーブルが、ノードの親ノードに追加されたテーブルと一致しないか、INSERT または CREATE ステートメントで指定されたテーブルが、ノードの出力に追加されたテーブルと一致しません。
たとえば、前の図では、以下のように表示されます。
- コミットしたノードのコード内の SELECT ステートメントは table2 を指定していますが、table2 はコミットされたノードの親ノードに追加されていません。
- doc_test はコミットされたノードの出力に追加されていますが、ノードのコード内の INSERT または CREATE ステートメントは doc_test という名前のテーブルを指定していません。
解決策
- 自動トリガーノードによって生成されないテーブルがノードの入力または出力として構成されている場合は、エラーを無視してノードをコミットできます。ノードの依存関係により、ノードは実行がスケジュールされている祖先ノードによって生成されたテーブル データを正常に取得できます。ただし、祖先ノードの実行がスケジュールされていない場合、システムは祖先ノードが最新のテーブル データを生成したかどうかを検出できません。ノードのコード内の SELECT ステートメントが自動トリガーノードによって生成されないテーブルを指定している場合は、SELECT ステートメントによって指定されたテーブルを、コミットされたノードの親ノードから削除できます。自動トリガーノードによって生成されないテーブルには、次の種類があります。
- オンプレミス マシンから DataWorks にアップロードされたテーブル
- ディメンション テーブル
- DataWorks によってスケジュールされていないノードによって生成されたテーブル
- 手動でトリガーされたノードによって生成されたテーブル
- テーブルが自動トリガーノードによって生成される場合は、データ系列とスケジューリングの依存関係が正しく構成されているかどうかを確認する必要があります。上記の項目を確認せずにノードを強制的にコミットすると、次のエラーが発生する可能性があります。
- 子孫ノードは、依存している祖先ノードからデータを取得できません。たとえば、ノードのコード内の SELECT ステートメントがテーブル A を指定し、テーブル A が毎日実行するようにスケジュールされたノードによって生成されるとします。テーブル A がノードの親ノードに追加されておらず、テーブル A を生成するスケジュール済みノードの実行が 1 日失敗した場合、ノードはスケジュール済みノードの最後の実行によって生成されたデータを取得できない可能性があります。
- 祖先ノードの出力名が 存在しません。たとえば、ノード A のコード内の CREATE または INSERT ステートメントがテーブル B を指定していますが、テーブル B がノード A の出力として構成されていないとします。この場合、ノード B のコード内の SELECT ステートメントがテーブル B を指定すると、システムはノード A とノード B の間の依存関係を確立するために、テーブル B をノード B の入力として自動的に構成します。ただし、システムは依存関係に基づいてノード A を見つけることができません。したがって、ノード B をコミットすると、システムはノード B の祖先ノードの出力名が 存在しないというエラーを報告します。詳細については、「ノード A をコミットすると、ノード A の依存関係にある祖先ノードの出力名が存在しないというエラーがシステムによって報告されます。どうすればよいですか?」をご参照ください。