Dataphin は、各ノードに設定されたスケジューリング依存関係の構成に従って、ビジネスワークフロー内のノードを実行します。このプロセスにより、ビジネスデータが正確かつタイムリーに生成されます。このトピックでは、スケジューリング依存関係の仕組みと、その構成における主要な原則について説明します。
背景情報
スケジューリング依存関係は、ノード間の上流-下流関係を定義します。Dataphin では、下流タスクノードは、その上流タスクノードが正常に完了した後にのみ開始されます。スケジューリング依存関係を構成することで、下流タスクが正しいデータで実行されることを保証します。上流ノードが正常に実行されると、Dataphin は上流テーブルで最新のデータが利用可能であることを検出します。その後、下流ノードはそのデータを読み取ることができます。このプロセスにより、下流ノードが上流テーブルにデータが投入される前にデータを読み取ろうとした場合に発生する可能性のあるエラーを防ぎます。
操作手順
Dataphin ホームページの上部のメニューバーで、[開発] > [データ開発] を選択します。
[開発] ページで、上部のメニューバーからプロジェクトを選択します。Dev-Prod モードでは、環境も選択します。
左側のナビゲーションウィンドウで、[データ処理] > [コンピューティングタスク] を選択します。
コンピューティングタスクのリストで、対象のコンピューティングタスクをクリックして、その構成タブを開きます。
右側のサイドバーで、[プロパティ] をクリックして、[プロパティ] パネルを開きます。[スケジュール依存関係] セクションで、以下のパラメーターを設定します。
上流依存関係
Auto-parse
ノードタイプが SQL の場合、[自動解析] をクリックできます。Dataphin はその後、コードを解析して上流タスクおよび出力テーブルを検出します。Dataphin は、解析されたすべての依存関係を上流依存関係リストに追加します。解析済みの依存関係テーブルを表示、編集、または削除できます。
説明自動的に解析された入力テーブルに複数の生成タスクがある場合、これらのタスクはすべてデフォルトで上流依存関係として扱われます。
解析されたすべての依存関係について、デフォルトの依存関係サイクルは This cycle です。
コードがプロジェクト変数を参照している場合、またはプロジェクトを指定していない場合、Dataphin は安定したスケジューリングを保証するために、デフォルトで本番プロジェクト名を使用します。たとえば、開発プロジェクト名が
onedata_devの場合:コードに
select * from s_orderが含まれている場合、Dataphin は依存関係をonedata.s_orderとして解決します。コードに
select * from ${onedata}.s_orderが含まれている場合、Dataphin は依存関係をonedata.s_orderとして解決します。コードに
select * from onedata.s_orderが含まれている場合、Dataphin は依存関係をonedata.s_orderとして解決します。コードに
select * from onedata_dev.s_orderが含まれている場合、Dataphin は依存関係をonedata_dev.s_orderとして解決します。
Add root node
タスクに上流依存関係がない場合は、[ルートノードの追加] をクリックして、ルートノードをタスクの上流依存関係として設定できます。
説明各テナントまたはエンタープライズには、初期化時に作成される virtual_root_node という名前の仮想ルートノードがあります。
Add previous cycle of this node
このオプションは、現在のインスタンスが実行される前に、タスクが前日または N 時間前などの前のサイクルインスタンスが正常に完了するのを待機するようにします。
Add dependency
[自動解析] でスケジューリング依存関係を解析できない場合や、[自動解析] によって生成された上流依存関係の構成が要件を満たさない場合は、[+ 依存関係の追加] をクリックして、ノードの上流依存関係を手動で追加できます。
重要依存関係を追加すると、システムは Dependency cycle と Dependency policy のデフォルト設定を自動的に適用します。これらの設定を変更するには、リスト内の依存関係の横にある
アイコンをクリックして、その Dependency cycle と Dependency policy を編集します。Dependency cycle: 上流タスクインスタンスのスケジュールされた実行期間 (トリガー時間) です。デフォルトでは、本日: [00:00–24:00) です。
Dependency policy: 一部の依存関係サイクルには複数のインスタンスがある場合があります。インスタンスを選択するためのポリシーを指定する必要があります。インスタンスが1つしかない場合、任意のポリシーを選択できます。上流タスクのスケジューリングに対する将来の潜在的な変更との互換性を確保するために、相対パスポリシーのみがサポートされています。
クロスサイクル依存関係のデフォルトポリシーの詳細については、「付録 2: クロスサイクル依存関係のデフォルトポリシー」をご参照ください。
Add dependency – Physical node
ノードリストから1つ以上の物理ノードを選択できます。リストは、[This project]、[Project]、[Node type]、[Node name]、または [Output table name] でフィルターできます。
Add dependency – Logical table node
ノードリストから1つ以上の論理テーブルノードを選択し、[logical table type]、[business segment]、および [logical table name] でノードを検索できます。
論理テーブル全体ではなく特定のフィールドに依存するには、ノードリストの[依存フィールド]列にある
アイコンをクリックして、利用可能なテーブルフィールドを表示し、要件を満たすものを選択できます。Add dependency – Cross-tenant node
ノードリストから1つ以上のクロステナントノードを選択できます。リストは、[Tenant]、[Node type]、または [Node name] でフィルターできます。
This node output
Dataphin は、ノードに対して出力名を自動的に生成します。追加の出力名を追加するには、[出力名の自動生成] をクリックできます。
重要Dataphin は出力名を使用してスケジューリング依存関係グラフを構築します。これらの名前は自動生成されます。手動で設定しないでください。
スケジューリングの依存関係の設定を完了するには、[OK] をクリックします。
依存関係サイクルとポリシーのプレビュー
対象のオフラインコンピューティングタスクの [プロパティ] をクリックします。[プロパティ] パネルで、[スケジュール依存関係] セクションに移動します。
[スケジュール依存関係] セクションで、[上流依存関係] リストから対象の依存関係を見つけ、[操作] 列の
アイコンをクリックします。[依存関係の編集] ダイアログボックスでは、ノード名、依存関係のサイクル、依存関係のポリシー、およびノードの依存関係のサイクルのプレビューを表示できます。
Dependency cycle: 上流タスクインスタンスのスケジュールされた実行期間 (トリガー時間) です。デフォルトでは、本日: [00:00–24:00) です。
Dependency policy: 一部の依存関係サイクルには複数のインスタンスがある場合があります。インスタンスを選択するためのポリシーを指定する必要があります。インスタンスが1つしかない場合、任意のポリシーを選択できます。上流タスクのスケジューリングに対する将来の潜在的な変更との互換性を確保するために、相対パスポリシーのみがサポートされています。
Node dependency cycle preview: このセクションには、現在のノードのインスタンスリストと、特定のデータタイムスタンプに対して選択された上流ノードが表示されます。

ブロック
説明
① 選択した上流ノードのインスタンスリスト
データタイムスタンプ: これは、Dependency cycle と現在のノードの データタイムスタンプ によって決定されます。
依存期間は 現在の期間 (本日) として定義され、データタイムスタンプは 現在のノードのビジネス日付 と一致します。
前のサイクル (前日) 依存関係の場合、データタイムスタンプは 現在のノードのデータタイムスタンプ - 1 日 です。
依存期間が 過去 N 日 の場合、データタイムスタンプは 現在のノードのデータタイムスタンプ - N 日 として計算されます。
依存関係サイクルが 過去 24 時間 で、インスタンスが2つのデータタイムスタンプにまたがる場合、タイムスタンプは
{yyyy-MM-dd ~ yyyy-MM-dd}と表示されます。
インスタンスリスト: これは、選択した上流ノードのデータタイムスタンプにおけるインスタンスの総数を示します。
インスタンスの総数が5以下の場合、リストにはすべてのインスタンスが表示されます。
インスタンスの合計数が 5 より多い場合、[すべて展開] をクリックして、すべてのインスタンスを表示できます。
左側のリスト (先祖ノードインスタンス) のインスタンスが、右側のリスト (現在のノードインスタンス) の現在選択されているインスタンスの依存関係であり、そのインスタンスが左側のリストの 最初のインスタンス または 最後のインスタンス である場合、左側のリストには 最初のインスタンス と 最後のインスタンス が表示されます。
左側のリスト (選択された先祖ノードインスタンスリスト) のインスタンスが、右側のリスト (現在のノードのインスタンスリスト) の選択されたインスタンスの依存関係であり、リストの最初または最後のインスタンスではない場合、左側のリストには最初のインスタンス、依存関係インスタンス、および最後のインスタンスが表示されます。
インスタンスは
Instance n ({scheduled trigger time})の順に表示され、n は1から始まり増加します。
② このノードのインスタンスリスト
これは、選択されたデータタイムスタンプにおけるこのノードのインスタンスの総数を示します。
インスタンスの合計数が 5 以下の場合、リストにはすべてのインスタンスが表示されます。合計数が 5 を超える場合、リストには最初と最後のインスタンスのみが表示されます。すべてのインスタンスを表示するには、[すべて展開] をクリックします。デフォルトでは、最初のインスタンス(インスタンス 1)が選択されています。別のインスタンスをクリックして、選択を切り替えることができます。
インスタンスは
Instance n ({scheduled trigger time})の順に表示され、n は1から始まり増加します。③ 右側の選択されたインスタンスと左側のインスタンスを接続する線
Dependency policy が First instance、Last instance、Nearest later instance、または Nearest earlier instance の場合、現在のノードの選択されたインスタンスと上流ノードの単一のインスタンスが線で接続されます。
Dependency policy が All instances の場合、上流ノードのすべてのインスタンスが選択されます。接続線は、すべての上流インスタンスが現在のノードの選択されたインスタンスの依存関係であることを示します。
付録 1: デフォルトの依存関係サイクルとポリシー
このノードのスケジューリングサイクル | 上流ノードのスケジューリングサイクル | 上流ノードは自己依存しますか? | デフォルトの依存関係サイクル | デフォルトの依存関係ポリシー |
日/週/月 | 日 | はい/いいえ | このサイクル (本日) | 最後のインスタンス |
日/週/月 | 時/分 | いいえ | このサイクル (本日) | すべてのインスタンス |
日/週/月 | 時/分 | はい | このサイクル (本日) | 最後のインスタンス |
月/週/日/時/分 | 月/週 | はい | このサイクル (本日) | 最後のインスタンス |
月/週/日/時/分 | 月/週 | いいえ | このサイクル (本日) | 最後のインスタンス |
時/分 | 日 | はい/いいえ | このサイクル (本日) | 最後のインスタンス |
時/分 | 時/分 | はい/いいえ | このサイクル (本日) | 最後のインスタンス |
付録 2: クロスサイクル依存関係のデフォルトポリシー
以下の表で、- は 該当なし を意味します。
このノードのスケジューリングサイクル | 上流ノード | 上流ノードのスケジューリングサイクル | 上流ノードは自己依存しますか? | デフォルトの依存関係サイクル |
月 | このノード (自己依存) | - | - | 前のサイクル (1 日前) |
週 | このノード (自己依存) | - | - | 前のサイクル (1 日前) |
日 | このノード (自己依存) | - | - | 前のサイクル (1 日前) |
時 | このノード (自己依存) | - | - | 過去 24 時間 |
分 | このノード (自己依存) | - | - | 過去 24 時間 |
日/週/月 | このノードではない | 日 | - | このサイクル (本日) |
日/週/月 | このノードではない | 時/分 | いいえ | このサイクル (本日) |
日/週/月 | このノードではない | 時/分 | はい | このサイクル (本日) |
月/週/日/時/分 | このノードではない | 月/週 | はい | このサイクル (本日) |
月/週/日/時/分 | このノードではない | 月 | いいえ | このサイクル (本日) |
月/週/日/時/分 | このノードではない | 週 | いいえ | このサイクル (本日) |
時/分 | このノードではない | 日 | - | このサイクル (本日) |
時/分 | このノードではない | 時/分 | - | このサイクル (本日) |