ノードのスケジューリング依存関係を設定する前に、ノードによって生成されたテーブルの系統を確認する必要があります。たとえば、テーブルのデータ系統とテーブル内のパーティションデータを確認する必要があります。また、ノードによって生成されたテーブルの系統に基づいて、ノードのスケジューリング依存関係を設定する必要があります。このトピックでは、テーブルの系統を確認する方法について説明します。また、ノードによって生成されたテーブルの系統に基づいてノードのスケジューリング依存関係を設定しない場合の影響についても説明します。
背景情報
次の表に、さまざまなシナリオでテーブルの系統を確認する方法と、ノードによって生成されたテーブルの系統に基づいてノードのスケジューリング依存関係を設定しない場合の影響を示します。
| 項目 | 説明 |
| テーブルの系統の確認 | ワークスペース内のノード A によって生成されたテーブルが、同じワークスペース内のノード B によって生成された別のテーブルに依存している場合、ノード A とノード B のスケジューリングパラメーターの設定と、ノード A とノード B のスケジューリングパラメーターの置換結果に基づいて、ノード B によって生成されたテーブル内のパーティションデータを毎日確認できます。 |
| ワークスペース内のノード A によって生成されたテーブルが、別のワークスペース内のノード B によって生成された別のテーブルに依存している場合、DataMap の出力情報に基づいて、ノード B によって生成されたテーブル内のパーティションデータを毎日確認できます。 | |
| ノードによって生成されたテーブルの系統に基づいてノードのスケジューリング依存関係を設定しない場合の影響 | ノードによって生成されたテーブルの系統は存在しますが、テーブルの系統に基づいてノードのスケジューリング依存関係を設定していません。その結果、子孫ノードがノードからデータを取得するときにエラーが発生します。 |
| ノードによって生成されたテーブルの系統が存在し、テーブルの系統に基づいてノードのスケジューリング依存関係を設定しています。ただし、子孫インスタンスは予期しない祖先インスタンスに依存しています。その結果、子孫インスタンスを生成するノードが、ノードに対して生成された祖先インスタンスからデータを取得するときにエラーが発生します。 |
使用上の注意
DataWorks では、ノードがデータを読み取るテーブルのパーティション、またはノードによって生成されたデータを格納するテーブルのパーティションは、ノードに対して設定されたスケジューリングパラメーターによって決定されます。祖先ノードによって生成されたテーブルのパーティションが、子孫ノードが依存するテーブルのパーティションと一致しない場合は、ビジネス要件に基づいて子孫ノードのスケジューリングパラメーターの設定を変更するかどうかを決定できます。
現在のサイクルでノード A に対して生成されたインスタンスを、前のサイクルでノード B に対して生成されたインスタンスによって生成されたテーブルのパーティションデータに依存させる場合は、ノード A のサイクル間スケジューリング依存関係を設定できます。このようにして、現在のサイクルでノード A に対して生成されたインスタンスは、前のサイクルでノード B に対して生成されたインスタンスに依存します。
説明 パーティションテーブルのシナリオでは、ノードによって生成されたテーブルのパーティションが、現在のノードが依存するテーブルのパーティションであることを確認してください。
テーブルの系統の確認
現在のノードが依存するノードによって生成されたテーブルの系統の確認(両方のノードが同じワークスペース内にある場合)
ほとんどの場合、ノードは、ノードに対して設定したスケジューリングパラメーターに基づいて、特定のテーブルの特定のパーティションに定期的にデータを書き込みます。スケジューリングパラメーターの動的な置換については、「スケジューリングパラメーター」をご参照ください。ワークスペース内のノード A が同じワークスペース内のノード B に依存している場合は、ノード A のスケジューリングパラメーターの設定を確認できます。- 開発環境での祖先テーブルデータと子孫テーブルデータ間の依存関係の確認
祖先ノードの設定タブに移動し、ノードのスケジューリングパラメーターの設定とノードのコードの詳細を表示します。
- 本番環境での祖先テーブルデータと子孫テーブルデータの出力の確認
現在のノードが依存するノードによって生成されたテーブルの系統の確認(ノードが異なるワークスペース内にある場合)
ワークスペース内のノード A が別のワークスペース内のノード B に依存している場合、DataMap の出力情報に基づいて、ノード B によって生成されたテーブル内のパーティションデータを毎日確認できます。たとえば、ノード B によって毎日生成されるテーブルのパーティションデータのデータタイムスタンプが前日か当日かを確認できます。
ノードによって生成されたテーブルの系統に基づいてノードのスケジューリング依存関係を設定しない場合の影響
シナリオ 1:ノードによって生成されたテーブルの強い系統が存在するが、テーブルの系統に基づいてノードのスケジューリング依存関係を設定しない。その結果、子孫ノードがノードからデータを取得するときにエラーが発生する。
Job_B ノードのコードの SELECT ステートメントでテーブル A が指定されているが、テーブル A のデータを生成する Job_A ノードが Job_B ノードの祖先ノードとして設定されていない場合、Job_B ノードはテーブル A のデータが生成される前に実行を開始する可能性があります。この場合、Job_B ノードは実行またはデータの生成を行うことができません。Job_A ノードのスケジューリング時間は Job_B ノードのスケジューリング時間よりも早くなっています。ただし、Job_A ノードが 02:00 までにデータを生成できない場合、Job_B ノードが Job_A ノードからデータを取得するときにエラーが発生します。Job_A ノードは、次の理由により、01:00 に想定どおりにデータを生成できない場合があります。- Job_A ノードの祖先ノードの実行時にエラーが発生するか、Job_A ノードの祖先ノードの実行速度が遅い。
- Job_A ノードまたは Job_A ノードの祖先ノードがリソースを待機している。
- Job_A ノードの祖先ノードが特定の日にフリーズしている。
シナリオ 2:ノードによって生成されたテーブルの系統に基づいてノードのスケジューリング依存関係を設定したが、子孫ノードが祖先ノードによって生成されたテーブルからデータを取得する時間がテーブルの生成時間よりも早い。
ノードに対して同じサイクルのスケジューリング依存関係を設定し、別のノードによって生成されたテーブルのパーティションが現在のノードが依存するテーブルのパーティションと一致しない場合、現在のノードが祖先ノードからデータを取得するときにデータ品質の問題が発生するか、現在のノードでエラーが発生する可能性があります。説明 MaxCompute ノードが max_pt 関数を使用する場合、MaxCompute ノードの祖先ノードによって毎日生成されるテーブルのパーティションデータが有効であることを確認してください。