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

DataWorks:テーブルリネージの確認

最終更新日:Mar 26, 2026

ノードのスケジューリング依存関係を設定する前に、そのノードが生成するテーブルのリネージを確認してください。テーブルリネージは、先祖ノードが特定の日にどのパーティションに書き込むかを示すため、子孫ノードが実行時に読み取る予定のパーティションが実際に利用可能になるかどうかを検証できます。

このトピックでは、以下の内容について説明します:

  • 両方のノードが同一ワークスペース内にある場合、および異なるワークスペース内にある場合のテーブルリネージの確認方法

  • スケジューリング依存関係の設定ミスによって生じる問題

スケジューリング依存関係の仕組み

DataWorks のスケジューリング依存関係は、2 つの独立した軸に基づいて動作します。これらを明確に分離することで、よくある混乱を防ぎます:

関係
DAG 構造単一のスケジューリングサイクル内における上流 vs. 下流ノード A がノード B に依存する
時間サイクル現在のサイクル vs. 前回のサイクル本日のインスタンスが昨日の出力に依存する

スケジューリング依存関係は DAG 構造上の関係を表現します。クロスサイクルスケジューリング依存関係は時間サイクル上の関係を表現します。これらは別個の構成であり、ノードが読み取るパーティションデータに異なる影響を与えます。

注意事項

DataWorks では、ノードが読み取りまたは書き込みを行うパーティションは、そのノードに対して構成されたスケジューリングパラメーターによって決定されます。先祖ノードが書き込むパーティションと子孫ノードが期待するパーティションが一致しない場合、ビジネス要件に応じて以下の 2 つの対応策があります:

  • 子孫ノードのスケジューリングパラメーター構成を変更し、先祖ノードの出力パーティションに合わせます。

  • 子孫ノードに対してクロスサイクルスケジューリング依存関係を構成します。

クロスサイクルスケジューリング依存関係:現在のサイクルにおけるノード A のインスタンスが、前回のサイクルにおけるノード B で生成されたパーティションデータに依存する必要がある場合、ノード A に対してクロスサイクルスケジューリング依存関係を構成します。これにより、ノード A の現在のサイクルのインスタンスは、ノード B の現在のサイクルのインスタンスではなく、前回のサイクルのインスタンスに依存するようになります。

パーティションテーブルを利用するシナリオでは、ノードが生成するテーブルのパーティションが、当該ノードが読み取ることを想定しているパーティションと一致していることを確認してください。

テーブルリネージの確認

両方のノードが同一ワークスペース内にある場合のリネージ確認

ノードは、スケジューリングパラメーターに基づいて定期的に特定のパーティションにデータを書き込みます。スケジューリングパラメーターの動的置換方法については、「スケジューリングパラメーター」をご参照ください。

ノード A が同一ワークスペース内のノード B に依存する場合、ノード B のスケジューリングパラメーター構成を確認して、各日にどのパーティションに書き込むかを特定します:

  • 開発環境:先祖ノード(ノード B)の構成タブに移動し、スケジューリングパラメーター構成およびノードのコードを確認して、出力されるパーティションを特定します。

  • 本番環境:本番環境において、先祖ノードおよび子孫ノードのテーブルデータ出力を確認します。

ノード A およびノード B のスケジューリングパラメーターの置換結果を比較し、ノード B が各日に書き込むパーティションが、ノード A が読み取ることを想定しているパーティションであることを検証します。

ノードが異なるワークスペース内にある場合のリネージ確認

ノード A が別のワークスペース内のノード B に依存する場合、DataWorks データマップ (DataMap) を使用して、ノード B が各日に生成するパーティションデータを確認します。

DataMap でノード B のテーブルの出力情報を表示し、日次パーティションのデータタイムスタンプを確認します。具体的には、各日に書き込まれるパーティションが前日の日付に対応するか、当日の日付に対応するかを確認します。

Confirm the lineage of the table generated by a node on which the current node depends (the nodes are in different workspaces)

障害シナリオ

誤ったスケジューリング依存関係の構成は、2 種類の明確な障害パターンを引き起こします。

シナリオ 1:リネージは存在するが依存関係が構成されていない

Job_B の SELECT 文でテーブル A からデータを読み取っているにもかかわらず、テーブル A を生成する Job_AJob_B の先祖ノードとして構成されていない場合、Job_B はテーブル A が利用可能になる前に開始してしまう可能性があります。このような場合、Job_B は実行に失敗するか、出力が生成されません。

Job_A のスケジュールされた開始時刻が Job_B よりも早かったとしても、Job_A が 02:00 より前にデータを生成できない場合、Job_B がデータを取得しようとした際にエラーが発生します。Job_A が予定通り 01:00 にデータを生成できなかった原因として、以下のようなものが考えられます:

  • Job_A の先祖ノードが失敗した、または実行が遅延した。

  • Job_A またはそのいずれかの先祖ノードがリソースを待機中である。

  • Job_A の先祖ノードが当該日にフリーズしている。

対処方法Job_AJob_B の先祖ノードとして構成し、Job_BJob_A の正常終了後にのみ開始されるようにします。

シナリオ 2:依存関係は構成されているがパーティションが一致しない

同一サイクルのスケジューリング依存関係が構成されているにもかかわらず、先祖ノードが書き込むパーティションと子孫ノードが期待するパーティションが一致しない場合、データ品質の問題が発生したり、子孫ノードが先祖ノードのテーブルから読み取ろうとした際にエラーを返すことがあります。

MaxCompute ノードで max_pt 関数を使用する場合、先祖ノードが各日に生成するパーティションデータは有効である必要があります。

対処方法:「テーブルリネージの確認」で説明されている手順に従い、先祖ノードと子孫ノード間のパーティションの配置を確認します。パーティションが一致しない場合は、子孫ノードのスケジューリングパラメーター構成を調整するか、クロスサイクルスケジューリング依存関係を構成してください。