Dataphin は、スケジューリング依存関係の設定を使用して、ビジネスフロー内のノードを特定の順序で実行します。これにより、ビジネスデータが効果的かつ時間通りに生成されることが保証されます。このトピックでは、スケジューリング依存関係の設定方法と設定の主な原則について説明します。
背景情報
スケジューリング依存関係とは、ノード間の上流または下流の関係です。Dataphin では、子孫タスクノードは、その先祖タスクノードが正常に実行された後にのみ実行されます。スケジューリング依存関係を設定することで、定期タスクが実行時に正しいデータを取得できるようになります。先祖ノードが正常に実行されると、Dataphin は先祖テーブルで最新のデータが利用可能になったことを検知します。その後、子孫ノードがデータを取得できます。これにより、子孫ノードがデータ準備完了前にデータを取得しようとすることによるエラーを防ぎます。
手順
Dataphin のホームページで、上部のメニューバーから [開発] > [データ開発] を選択します。
[開発] ページで、上部のメニューバーから [プロジェクト] を選択します。開発・本番モードでは、環境も選択する必要があります。
左側のナビゲーションウィンドウで、[データ処理] > [スクリプトタスク] を選択します。
コンピューティングタスクのリストで、対象のコンピューティングタスクをクリックしてそのタブを開きます。
右側のサイドバーで [プロパティ] をクリックして [プロパティ] パネルを開きます。[スケジューリング依存関係] セクションで、次のパラメーターを設定します。
上流依存関係
自動解析
ノードが SQL タスクの場合、[自動解析] をクリックします。Dataphin はタスクコードを自動的に解析して、上流タスクと出力テーブルを取得します。解析後、検出されたすべての依存関係テーブルが上流依存関係リストに追加されます。解析された依存関係テーブルは、表示、編集、または削除できます。詳細については、「自動解析プロセス」をご参照ください。
説明自動解析された入力テーブルに複数の出力タスクがある場合、すべての出力タスクがデフォルトで上流依存関係として設定されます。
解析されたすべての依存関係テーブルの依存関係サイクルは、デフォルトで [現在のサイクル] に設定されます。
コードがプロジェクト変数を参照しているか、プロジェクトが指定されていない場合、システムは生成されるスケジュールの安定性を確保するために、デフォルトで本番プロジェクト名に解決します。たとえば、開発プロジェクト名が
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として解析します。
ルート頂点を追加
タスクに上流依存関係がない場合は、[ルート頂点を追加] をクリックして、ルート頂点を上流依存関係として設定します。
説明各テナントまたは企業には、初期化時に virtual_root_node で始まる仮想ルート頂点があります。
このノードの前回サイクルを追加
このノードのタスクは、前回のサイクル (前日または過去 N 時間など) での正常な完了に依存します。
依存関係を追加
[自動解析] でスケジューリング依存関係の解析に失敗した場合、または [自動解析] で生成された上流依存関係の設定が実際のアプリケーションと一致しない場合は、手動で [+依存関係を追加] をクリックして、ノードの [上流依存関係] を追加できます。
重要依存関係を追加すると、物理ノードと論理テーブルノードの [依存関係サイクル] と [依存関係ポリシー] は、推奨設定が自動的に使用されます。変更するには、依存関係の
編集アイコンをクリックして、[依存関係サイクル] と [依存関係ポリシー] を変更します。依存関係サイクル:上流タスクインスタンスのスケジュールされた実行時間の範囲。通常、これは当日であり、範囲は [00:00–24:00) です。
依存関係ポリシー:依存関係サイクルには複数のインスタンスが含まれる場合があるため、依存関係ポリシーを指定する必要があります。インスタンスが 1 つしかない場合は、依存関係ポリシーを任意に設定できます。ただし、上流タスクのスケジューリング設定が変更される可能性との互換性を維持するため、相対パスポリシーのみがサポートされています。
サイクル間依存関係のデフォルトポリシーについては、「付録2:サイクル間依存関係のデフォルトポリシー」をご参照ください。
物理ノード依存関係の追加
[依存関係を追加] をクリックし、[物理ノード] を選択します。

[依存関係を追加 - 物理ノード] ダイアログボックスで、1 つ以上のノードを選択します。プロジェクト、ノードタイプ、ノード名、または出力テーブル名で対象のノードをフィルターできます。
[OK] をクリックします。
論理テーブルノードの追加
[依存関係を追加] をクリックし、[論理テーブルノード] を選択します。
[依存関係を追加 - 論理テーブルノード] ダイアログボックスで、1 つ以上のノードを選択します。論理テーブルタイプ、業務カテゴリ、または論理テーブル名で対象のノードをフィルターできます。
(任意) ノードリストで、ターゲットノードの[依存フィールド] 列の
アイコンをクリックして、論理テーブルのフィールドを表示します。[OK] をクリックします。
ノード出力
システムはノードの出力名を自動的に生成します。出力名を追加するには、[出力名を自動生成] をクリックします。
重要システムは出力名を使用してスケジューリング依存関係グラフを構築し、自動的に生成します。この設定は手動で変更しないでください。
[OK] をクリックして、スケジューリング依存関係の設定を完了します。
依存関係サイクルとポリシーのプレビュー
対象のオフラインコンピューティングタスクの [プロパティ] をクリックします。[プロパティ] パネルで、[スケジューリング依存関係] セクションに移動します。
[スケジューリング依存関係] エリアの [上流依存関係] リストで、対象の依存関係の [操作] 列にある
アイコンをクリックします。[依存関係を編集] ダイアログボックスで、依存ノード名、依存関係サイクル、依存関係ポリシー、ノード依存関係サイクルプレビューなどの情報を表示します。
依存関係サイクル:上流タスクインスタンスのスケジュールされた実行時間の範囲。通常、これは当日であり、範囲は [00:00–24:00) です。
依存関係ポリシー:依存関係サイクルには複数のインスタンスが含まれる場合があるため、依存関係ポリシーを指定する必要があります。インスタンスが 1 つしかない場合は、依存関係ポリシーを任意に設定できます。ただし、上流タスクのスケジューリング設定が変更される可能性との互換性を維持するため、相対パスポリシーのみがサポートされています。
ノード依存関係サイクルプレビュー: 指定されたデータタイムスタンプにおける、現在のノードと選択した先祖ノードのインスタンスリストを表示します。

セクション
説明
① 選択された先祖ノードのインスタンスリスト
データタイムスタンプ:依存周期と選択された現在のノードのデータタイムスタンプによって決まります。
このエポック (当日):データタイムスタンプは、現在のノードのデータタイムスタンプと同じです。
依存エポックが前のエポック (T-1) の場合、データタイムスタンプは現在のノードのデータタイムスタンプ - 1 日になります。
依存エポックが過去 N 日間の場合、データタイムスタンプは現在のノードのデータタイムスタンプ - N 日になります。
依存周期が過去 24 時間で、含まれるインスタンスが 2 つのデータタイムスタンプにまたがる場合、データタイムスタンプは
{yyyy-MM-dd ~ yyyy-MM-dd}のように表示されます。
インスタンスリスト:指定されたデータタイムスタンプにおける、選択された先祖ノードのインスタンスの総数を表示します。
データタイムスタンプのインスタンス総数が 5 以下の場合、インスタンスリストにはすべてのインスタンスが表示されます。
インスタンス総数が 5 より大きい場合、[すべて展開] をクリックしてすべてのインスタンスを表示できます。
先祖ノードリスト内の依存インスタンスが最初のインスタンスまたは最後のインスタンスである場合、ビューには最初のインスタンスと最後のインスタンスのみが表示されます。
先祖ノードリスト内の依存インスタンスが最初でも最後でもないインスタンスである場合、ビューには最初のインスタンス、最後のインスタンス、および依存インスタンスが表示されます。
インスタンスは
Instance n ({Instance Scheduled Time})のフォーマットで表示されます。ここで、n は 1 から始まる増分値です。
② 現在のノードのインスタンスリスト
選択されたデータタイムスタンプにおける、現在のノードのインスタンスの総数です。
選択されたデータタイムスタンプのインスタンス総数が 5 以下の場合、インスタンスリストにはすべてのインスタンスが表示されます。総数が 5 より大きい場合、リストには最初のインスタンスと最後のインスタンスのみが表示されます。[すべて展開] をクリックすると、すべてのインスタンスを表示できます。デフォルトでは、最初のインスタンス (Instance 1) が選択されています。インスタンスをクリックして選択します。
インスタンスは
Instance n ({Instance Scheduled Time})のフォーマットで表示されます。ここで、n は 1 から始まる増分値です。③ 右側で選択されたインスタンスと左側の依存インスタンスを接続する線
依存関係ポリシーが最初のインスタンス、最後のインスタンス、最も近い後続インスタンス、または最も近い先行インスタンスに設定されている場合、1 本の線が依存関係にある先祖インスタンスと、選択されている現在のインスタンスを接続します。
依存関係ポリシーがすべてのインスタンスの場合、先祖ノードリスト内のすべてのインスタンスが選択されます。接続線は、先祖ノードリスト内のすべてのインスタンスが、現在のノードリストで選択されたインスタンスの依存関係であることを示します。
付録1:初期のデフォルト依存関係サイクルとポリシー
現在のノードのスケジュールサイクル | 先祖ノードのスケジュールサイクル | 祖先ノードに自己依存があります | デフォルトの依存関係サイクル | デフォルトの依存関係ポリシー |
日/週/月 | 日 | はい/いいえ | 現在のサイクル (日) | 最後のインスタンス |
日/週/月 | 時間/分 | いいえ | 現在のサイクル (日) | すべてのインスタンス |
日/週/月 | 時間/分 | はい | 現在のサイクル (日) | 最後のインスタンス |
月/週/日/時間/分 | 月/週 | はい | 現在のサイクル (日) | 最後のインスタンス |
月/週/日/時間/分 | 月/週 | いいえ | 現在のサイクル (日) | 最後のインスタンス |
時間/分 | 日 | はい/いいえ | 現在のサイクル (日) | 最後のインスタンス |
時間/分 | 時間/分 | はい/いいえ | 現在のサイクル (日) | 最後のインスタンス |
付録2:サイクル間依存関係のデフォルトポリシー
次の表では、- は [該当なし] を示します。
現在のノードのスケジュールサイクル | 先祖ノード | 先祖ノードのスケジュールサイクル | 祖先ノードに自己依存があります | デフォルトの依存関係サイクル |
月 | 現在のノード (自己依存) | - | - | 前のサイクル (前日) |
週 | 現在のノード (自己依存) | - | - | 前のサイクル (前日) |
日 | 現在のノード (自己依存) | - | - | 前のサイクル (前日) |
時間 | 現在のノード (自己依存) | - | - | 過去 24 時間 |
分 | 現在のノード (自己依存) | - | - | 過去 24 時間 |
日/週/月 | 現在のノードではない | 日 | - | 現在のサイクル (日) |
日/週/月 | 現在のノードではない | 時間/分 | いいえ | 現在のサイクル (日) |
日/週/月 | 現在のノードではない | 時間/分 | はい | 現在のサイクル (日) |
月/週/日/時間/分 | 現在のノードではない | 月/週 | はい | 現在のサイクル (日) |
月/週/日/時間/分 | 現在のノードではない | 月 | いいえ | 現在のサイクル (日) |
月/週/日/時間/分 | 現在のノードではない | 週 | いいえ | 現在のサイクル (日) |
時間/分 | 現在のノードではない | 日 | - | 現在のサイクル (日) |
時間/分 | 現在のノードではない | 時間/分 | - | 現在のサイクル (日) |