Dataphin では、ノード間にスケジューリング依存関係を設定して、データワークフローをオーケストレーションすることができます。適切に設定されたワークフローは、各ノードが正しい順序で実行されることを保証し、タイムリーで正確なデータを提供します。このトピックでは、オフラインタスクのスケジューリング依存関係を設定する方法と、その主要な原則について説明します。
背景情報
スケジューリング依存関係は、上流ノードと下流ノードの関係を定義します。Dataphin では、下流タスクはその上流ノードが正常に完了した後にのみ実行されます。スケジューリング依存関係を設定することで、下流タスクがその上流テーブルが正常に生成された後にのみデータを取得することを保証します。これにより、下流ノードが利用不可能なデータにアクセスしようとしたときに発生するデータ取得エラーを防ぎます。
操作手順
Dataphin ホームページの上部メニューで、[Plan] > [Data Development] を選択します。
[Data Development] ページで、上部メニューから プロジェクト を選択します。Dev-Prod モードを使用している場合は、環境も選択する必要があります。
ナビゲーションペインで、[Data Processing] > [Compute Task] を選択します。
コンピューティングタスクリストで、対象のコンピューティングタスクをクリックして、その設定タブを開きます。
右側のペインで [Properties] をクリックして、[Properties] パネルを開きます。[Scheduling dependencies] セクションで、次のパラメーターを設定します。
上流の依存関係
自動解析
ノードが SQL タスクの場合、[Auto parse] をクリックできます。Dataphin はタスクコードを自動的に解析し、上流タスクと出力テーブルを特定します。解析された依存関係は、上流の依存関係リストに追加されます。解析された依存関係は、表示、編集、または削除できます。
説明入力テーブルが複数のタスクによって生成される場合、Dataphin はそれらのタスクすべてを上流の依存関係として自動的に追加します。
すべての解析された依存関係について、依存期間はデフォルトで [Current cycle] に設定されます。
コードがプロジェクト変数を参照しているか、プロジェクトを指定していない場合、システムはスケジューリングの安定性を確保するために、デフォルトで依存関係を本番プロジェクトのものとして解決します。たとえば、開発プロジェクト名が
onedata_devの場合:コードに
select * from s_orderが含まれている場合、スケジューリング依存関係はonedata.s_orderとして解析されます。コードに
select * from ${onedata}.s_orderが含まれている場合、スケジューリング依存関係はonedata.s_orderとして解析されます。コードに
select * from onedata.s_orderが含まれている場合、スケジューリング依存関係はonedata.s_orderとして解析されます。コードに
select * from onedata_dev.s_orderが含まれている場合、スケジューリング依存関係はonedata_dev.s_orderとして解析されます。
ルートノードの追加
タスクに上流の依存関係がない場合は、[Add root node] をクリックして、ルートノードをその上流の依存関係として設定できます。
説明各テナントまたは企業は、virtual_root_node で始まる名前の仮想ルートノードで初期化されます。
このノードの前のサイクルの追加
このオプションで自己依存を設定します。この場合、タスクの実行は、前のサイクル (たとえば、前日または N 時間前) のインスタンスの成功に依存します。
依存関係の追加
[Automatic Parsing] がスケジューリング依存関係を解決できない場合、または [Automatic Parsing] によって生成された上流の依存関係設定が実際のアプリケーションと一致しない場合は、手動で [+Add Dependency] をクリックして、ノードの上流の依存関係を追加できます。
依存関係の追加 - 物理ノード
ノードリストから 1 つ以上の物理ノードを選択できます。ノードを検索するには、[This project]、[Project]、[Node type]、[Node name]、または [Output table name] でリストを検索またはフィルタリングできます。
依存関係の追加 - 論理テーブルノード
ノードリストから 1 つ以上の論理テーブルノードを選択できます。ノードを検索するには、[Logical table type]、[Business segment]、および [Logical table name] でリストを検索およびフィルタリングできます。
テーブル全体ではなく、論理テーブルの特定のフィールドに依存する必要がある場合は、[Dependent fields] 列の
をクリックして、必要なテーブルフィールドを表示および選択します。依存関係の追加 - クロステナントノード
ノードリストから 1 つ以上のクロステナントノードを選択できます。ノードを検索するには、[Tenant]、[Node type]、および [Node name] でリストを検索およびフィルタリングできます。
依存関係を追加すると、[Dependency period] と [Dependency policy] がシステムの推奨値に自動的に設定されます。特定の依存関係のこれらの設定を変更するには、依存関係リストの
をクリックして、その [Dependency period] と [Dependency policy] を編集します。依存期間:上流タスクインスタンスのスケジュールされた実行の時間範囲。通常、これは当日であり、範囲 [00:00~24:00) になります。
依存関係ポリシー:依存期間内に複数のインスタンスが存在しうる場合は、依存関係ポリシーを指定する必要があります。また、上流タスクが [Succeeded] (成功)、[Failed] (失敗)、または [Completed (Succeeded or Failed)] (完了 (成功または失敗)) した場合に依存関係が満たされるかどうかを選択する必要もあります。デフォルト設定は [Succeeded] (成功) です。クロスサイクル依存関係のデフォルトポリシーについては、「付録 2:クロスサイクル依存関係のデフォルトポリシー」「」をご参照ください。
重要インスタンスが 1 つしかない場合は、どのポリシーでも選択できます。上流タスクのスケジュール変更との互換性を確保するため、相対パスポリシーのみがサポートされています。
成功:下流タスクは、上流タスクが成功した場合にのみ実行されます。上流タスクが失敗した場合、下流タスクは実行されません。
失敗:下流タスクは、すべて自動再試行の後に上流タスクが失敗した場合にのみ実行されます。上流タスクが成功した場合、下流タスクは実行されません。
完了 (成功または失敗):下流タスクは、すべての自動再試行の後に上流タスクが成功したか失敗したかに関係なく実行されます。
このノードの出力
システムは、作成したノードの出力名を自動的に生成します。複数の出力名を追加する必要がある場合は、[Auto-generate output name] をクリックできます。
重要システムは出力名を使用してスケジューリング依存関係グラフを構築します。出力名は自動的に生成されます。手動での変更は推奨されません。
[OK] をクリックして、スケジューリング依存関係の設定を保存します。
依存期間とポリシーのプレビュー
対象のオフラインコンピューティングタスクの [Properties] をクリックします。[Properties] パネルで、[Scheduling dependencies] セクションに移動します。
[Scheduling dependencies] セクションの [Upstream dependencies] リストで、対象の依存関係の [Actions] 列にある
アイコンをクリックします。[Edit dependency] ダイアログボックスで、依存ノード名、依存期間、依存関係ポリシー、ノード依存期間のプレビューなどの情報を表示できます。
依存期間:上流タスクインスタンスのスケジュールされた実行の時間範囲。通常、これは当日であり、範囲 [00:00~24:00) になります。
依存関係ポリシー:依存期間内に複数のインスタンスが存在しうる場合は、依存関係ポリシーを指定する必要があります。インスタンスが 1 つしかない場合は、どのポリシーでも選択できます。上流タスクのスケジュール変更との互換性を確保するため、相対パスポリシーのみがサポートされています。
ノード依存期間プレビュー:特定の業務日付について、現在のノードと選択された上流ノードのインスタンスリストを表示します。

セクション
説明
① 選択された上流ノードのインスタンスリスト
業務日付:この日付は、[Dependency period] と選択された 現在のノードの業務日付 によって決まります。
依存期間が [Current cycle] の場合、業務日付は 現在のノードの業務日付 と 同じ です。
依存期間が [Previous cycle] の場合、業務日付は 現在のノードの業務日付の 1 日前の日付 です。
依存期間が [N days ago] の場合、業務日付は 現在のノードの業務日付の N 日前の日付 です。
依存期間が [Last 24 hours] で、インスタンスが 2 つの業務日付にまたがる場合、業務日付は
{yyyy-MM-dd ~ yyyy-MM-dd}として表示されます。
インスタンスリスト:特定の業務日付における、選択された上流ノードのインスタンスの総数を表示します。
業務日付のインスタンス総数が 5 以下の場合、インスタンスリストには すべてのインスタンス が表示されます。
業務日付のインスタンス総数が 5 を超える場合、[Expand all] をクリックしてすべてのインスタンスを表示できます。
依存する上流インスタンスがリストの 最初 または 最後 のインスタンスである場合、UI には 最初のインスタンス と 最後のインスタンス が表示されます。
依存する上流インスタンスがリストの 最初または最後のインスタンスではない 場合、UI には 最初のインスタンス、依存インスタンス、および 最後のインスタンス が表示されます。
インスタンスは
インスタンス n ({インスタンスのスケジュール時刻})の形式で順次表示されます。n は 1 から始まります。
② 現在のノードのインスタンスリスト
選択された業務日付における現在のノードのインスタンスの総数。
業務日付のインスタンス総数が 5 以下の場合、リストには すべてのインスタンス が表示されます。インスタンス総数が 5 を超える場合、リストには 最初のインスタンス と 最後のインスタンス のみが表示されます。[Expand all] をクリックすると、すべてのインスタンスを表示できます。最初のインスタンス (インスタンス 1) がデフォルトで選択されています。インスタンス をクリックして、別のインスタンスを選択できます。
インスタンスは
インスタンス n ({インスタンスのスケジュール時刻})の形式で順次表示されます。n は 1 から始まります。③ 右側で選択されたインスタンスから左側の依存インスタンスへの接続線
[Dependency policy] が [First instance]、[Last instance]、[Nearest instance backward]、または [Nearest instance forward] の場合、右側 (現在のノード) の選択されたインスタンスと左側 (上流ノード) の単一のインスタンスが 1 本の線で接続されます。
[Dependency policy] が [All instances] の場合、左側 (上流ノード) の すべて のインスタンスが 選択 されます。接続線は、右側 の 選択されたインスタンス が 左側 の すべてのインスタンス に 依存 していることを示します。
付録 1:デフォルトの依存期間とポリシー
現在のノードサイクル | 上流ノードサイクル | 上流の自己依存 | デフォルトの依存期間 | デフォルトの依存関係ポリシー |
日次/週次/月次 | 日次 | はい/いいえ | 現在のサイクル | 最後のインスタンス |
日次/週次/月次 | 時次/分次 | いいえ | 現在のサイクル | すべてのインスタンス |
日次/週次/月次 | 時次/分次 | はい | 現在のサイクル | 最後のインスタンス |
月次/週次/日次/時次/分次 | 月次/週次 | はい | 現在のサイクル | 最後のインスタンス |
月次/週次/日次/時次/分次 | 月次/週次 | いいえ | 現在のサイクル | 最後のインスタンス |
時次/分次 | 日次 | はい/いいえ | 現在のサイクル | 最後のインスタンス |
時次/分次 | 時次/分次 | はい/いいえ | 現在のサイクル | 最後のインスタンス |
付録 2:クロスサイクル依存関係のデフォルトポリシー
次の表では、「-」 はパラメーターが 適用されない ことを示します。
現在のノードサイクル | 上流ノード | 上流ノードサイクル | 上流の自己依存 | デフォルトの依存期間 |
月次 | 現在のノード (自己依存) | - | - | 前のサイクル |
週次 | 現在のノード (自己依存) | - | - | 前のサイクル |
日次 | 現在のノード (自己依存) | - | - | 前のサイクル |
時次 | 現在のノード (自己依存) | - | - | 過去 24 時間 |
分次 | 現在のノード (自己依存) | - | - | 過去 24 時間 |
日次/週次/月次 | 他のノード | 日次 | - | 現在のサイクル |
日次/週次/月次 | 他のノード | 時次/分次 | いいえ | 現在のサイクル |
日次/週次/月次 | 他のノード | 時次/分次 | はい | 現在のサイクル |
月次/週次/日次/時次/分次 | 他のノード | 月次/週次 | はい | 現在のサイクル |
月次/週次/日次/時次/分次 | 他のノード | 月次 | いいえ | 現在のサイクル |
月次/週次/日次/時次/分次 | 他のノード | 週次 | いいえ | 現在のサイクル |
時次/分次 | 他のノード | 日次 | - | 現在のサイクル |
時次/分次 | 他のノード | 時次/分次 | - | 現在のサイクル |