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

DataWorks:シナリオ 2: 前サイクルのインスタンスに依存するノードのスケジューリング依存関係を設定する

最終更新日:Jan 11, 2025

サイクル間の依存関係とは、ノードが前サイクルのインスタンス、子孫ノードの前サイクルのインスタンス、または指定されたノードの前サイクルのインスタンスに依存していることを示します。ノードに対してサイクル間の依存関係を設定すると、関連する前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルでノードが実行されます。

DataWorks は、以下のタイプのサイクル間の依存関係をサポートしています。
  • 子孫ノードの前サイクルのインスタンスへの依存関係
    • ノードの依存関係: ノードは、その子孫ノードの前サイクルのインスタンスに依存します。たとえば、ノード A には、ノード B、ノード C、ノード D の 3 つの子孫ノードがあるとします。ノード A に対してこのタイプの依存関係を設定すると、ノード B、ノード C、ノード D のすべての前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルでノード A が実行されます。
    • ビジネスシナリオ: ノードは、その子孫ノードが、前サイクルでノードによって生成されたテーブルのデータを正常にクレンジングした後にのみ、現在のサイクルで実行されます。子孫ノードがデータをクレンジングしたかどうかを確認するには、子孫ノードによって生成されたテーブルに対してデータ品質監視ルールを設定できます。
  • 現在のノードの前サイクルのインスタンスへの依存関係
    • ノードの依存関係: ノードは、その前サイクルのインスタンスに依存します。ノードは、ノードの前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルで実行されます。
    • ビジネスシナリオ: 現在のサイクルでのノードの実行は、ノードの前サイクルのインスタンスによって生成されたビジネスデータに依存します。ノードのデータがクレンジングされたかどうかを確認するには、ノードによって生成されたテーブルに対してデータ品質監視ルールを設定できます。
  • 指定されたノードの前サイクルのインスタンスへの依存関係: このタイプの依存関係を設定するには、ノードが依存するノードの ID を手動で入力する必要があります。ID はコンマ (,) で区切ります (例: 12345,23456)。
    • ノードの依存関係: ノードは、指定されたノードの前サイクルのインスタンスに依存します。ノードは、指定されたノードの前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルで実行されます。
    • ビジネスシナリオ: ビジネスロジックでは、ノードは他のノードによって生成されたビジネスデータに依存しますが、ノード自体では処理されません。

サイクル内とサイクル間の依存関係の違いは、サイクル間の依存関係が[オペレーションセンター]に点線で表示されることです。

ノードをアンデプロイする前に、ノードに設定されている依存関係 (サイクル内とサイクル間の依存関係を含む) を削除する必要があります。次の図は、ノードの[プロパティ]パネルを示しています。1 とマークされたセクションのノードのサイクル間の依存関係と、2 とマークされたセクションのサイクル内の依存関係を削除する必要があります。Delete

ビジネス要件に基づいて、ノードの先祖ノードに対してサイクル間またはサイクル内の依存関係を設定できます。ほとんどの場合、ノードの先祖ノードに対してサイクル内またはサイクル間の依存関係のいずれかを設定できます。ノードの自動解析機能を有効にすると、スケジューリングシステムによって、ノードの先祖ノードに対してサイクル内の依存関係が自動的に設定されます。この設定が要件を満たしていない場合は、デフォルトのサイクル内の依存関係を削除し、ノードに対してサイクル間の依存関係を設定できます。詳細については、「スケジューリング依存関係のロジック」をご参照ください。

次の図は、ワークフロー内のノード間の依存関係を示しています。Dependency
次の図は、[オペレーションセンター]での依存関係の表示方法を示しています。Dependency
次の図は、xc_create ノードのコードと設定を示しています。Node

前の図では、xc_create ノードは xc_1 テーブルと xc_2 テーブルを作成し、2 つのテーブルにデータを挿入します。 xc_1 テーブルと xc_2 テーブルは、xc_create ノードの出力です。

次の図は、xc_select ノードのコードと設定を示しています。Sample node configuration

前の図では、xc_select ノードは xc_1 テーブルと xc_2 テーブルのデータをクエリします。自動解析機能に基づいて、xc_create ノードに対するサイクル内の依存関係が xc_select ノードに対して自動的に設定されます。

子孫ノードの前サイクルのインスタンスへの依存関係

ノードの依存関係: ノードは、その子孫ノードの前サイクルのインスタンスに依存します。たとえば、ノード A には、ノード B、ノード C、ノード D の 3 つの子孫ノードがあるとします。ノード A に対してこのタイプの依存関係を設定すると、ノード B、ノード C、ノード D のすべての前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルでノード A が実行されます。

ビジネスシナリオ: ノードは、その子孫ノードが前サイクルでノードによって生成されたテーブルのデータを正常にクレンジングした後にのみ実行されます。そうでない場合、ノードは現在のサイクルでは実行されません。

xc_create ノードの依存関係を設定する場合は、[サイクル間の依存関係] を選択し、[依存対象] を [子ノードのインスタンス] に設定します。Instances of Child Nodes
次の図は、[オペレーションセンター]での依存関係の表示方法を示しています。Dependency

現在のノードの前サイクルのインスタンスへの依存関係

ノードの依存関係: ノードは、その前サイクルのインスタンスに依存します。ノードは、ノードの前サイクルのインスタンスが正常に実行された後にのみ、現在のサイクルで実行されます。

ビジネスシナリオ: 現在のサイクルでのノードの実行は、ノードの前サイクルのインスタンスによって生成されたビジネスデータに依存します。この例では、ノードは週単位で実行するようにスケジュールされています。このようにして、[オペレーションセンター]でノードの依存関係を簡単に表示できます。

ノードの依存関係を表示するには、[オペレーションセンター] に移動します。左側のナビゲーションペインで、[サイクルタスクのメンテナンス] > [サイクルインスタンス] を選択します。ノードを検索して、その依存関係を表示します。
説明 たとえば、ノードが時間単位で実行するようにスケジュールされており、前サイクルのインスタンスに依存しているとします。特定の時間に生成されたインスタンスが正常に実行されない場合、システムは次の時間に生成されたインスタンスを実行しません。

1 日目に生成された最初のインスタンスが実行されないか、実行に失敗した場合、その日の残りの時間に生成されたインスタンスは実行できません。

指定されたノードの前サイクルのインスタンスへの依存関係

ノードの依存関係: xc_information ノードによって生成されたテーブルは、xc_create ノードのコードでは使用されません。ただし、xc_create ノードは、ビジネスロジックで設定されているように、前サイクルの xc_information ノードの出力データに依存します。論理的には、xc_create ノードは xc_information ノードの前サイクルのインスタンスに依存します。

ビジネスシナリオ: ノード A は、ビジネスロジックに基づいてノード B によって生成されたビジネスデータに依存します。ただし、ビジネスデータはノード A のコードでは参照されません。これは、ノード A がビジネスデータに対して操作を実行しないことを示します。

この例では、xc_create ノードを設定する場合は、[サイクル間の依存関係] を選択し、[依存対象] を [カスタムノードのインスタンス] に設定してから、xc_information ノードの ID (1000374815) を入力します。Node
ノードの依存関係を表示するには、[オペレーションセンター] に移動します。左側のナビゲーションペインで、[サイクルタスクのメンテナンス] > [サイクルインスタンス] を選択します。ノードを検索して、その依存関係を表示します。Auto triggered node instances

前サイクルのインスタンスへの依存関係の高度な設定

分岐ノードには 2 つの子孫ノードがあります。ほとんどの場合、実際に実行されるのは子孫ノードの 1 つだけです。スケジューリングシステムは、1 つの子孫ノードのインスタンスを生成して実行します。もう一方の子孫ノードについては、スケジューリングシステムはインスタンスを生成し、インスタンスを実行せずに正常な応答を直接返します。さらに、スケジューリングシステムはこの子孫ノードの子孫ノードのドライランも実行します。これが要件を満たしていない場合は、分岐ノードのこの子孫ノードを設定するときに、[アップストリームノードのエアランニング属性はサイクル間を実行しません] を選択できます。

分岐ノードの子孫ノードが自身の最後のサイクルインスタンスに依存し、最後のサイクルインスタンスがドライランである場合、子孫ノードも現在のサイクルでドライランになります。その結果、子孫ノードは永続的にドライランノードになります。

次の図は例を示しています。スケジューリングシステムが左側の子孫ノードのドライランを実行する場合、スケジューリングシステムはこの子孫ノードの子孫ノードのドライランも実行します。

ビジネスでは、分岐ノードの子孫ノードの実行が現在のサイクルの分岐ノードの結果のみに依存し、子孫ノードが前サイクルのドライランの影響を受けないようにする必要がある場合があります。この要件を満たすには、次の手順を実行します。
  1. 分岐ノードのこの子孫ノードの編集タブで、右側のナビゲーションペインの [プロパティ] をクリックします。
  2. [スケジュール] パネルの [スケジュール] セクションで、[サイクル間の依存関係] を選択します。
  3. [詳細設定] をクリックします。
  4. [最後のサイクルに依存する高度な設定] メッセージで、[アップストリームノードのエアランニング属性はサイクル間を実行しません] を選択します。このようにして、分岐ノードの子孫ノードは前サイクルのドライランの影響を受けません。Advanced Settings
説明 この高度な設定は、分岐ノードの子孫ノードにのみ適用されます。他のノードの場合、前サイクルのドライランは現在のサイクルの実行に影響しません。

サイクル間の依存関係の一般的なシナリオ

  • シナリオ 1
    • シナリオの説明: ノード A は 1 日 1 回実行するようにスケジュールされています。ノード B は 1 時間ごとに実行するようにスケジュールされています。ノード A はノード B に依存します。デフォルトでは、ノード A は毎日、ノード B が 24 回実行された後に実行されます。ただし、ノード A を毎日 12:00 に実行したいと考えています。
    • 解決策: ノード B を設定する場合は、[サイクル間の依存関係] を選択し、[依存対象] を サイクル間依存関係[現在のノードのインスタンス] に設定します。ノード A を設定する場合は、

      このように、12:00 にノード B のインスタンスが生成されて実行された後、スケジューリングシステムはノード A を実行します。

      を 12:00 に設定します。ノード A のサイクル間の依存関係は設定しないでください。
  • シナリオ 2
    • シナリオの説明: ノード A は 1 日 1 回実行するようにスケジュールされています。ノード B は 1 時間ごとに実行するようにスケジュールされています。ノード A は、前日にノード B によって生成されたデータに依存します。
    • 解決策: ノード A を設定する場合は、[サイクル間の依存関係] を選択し、サイクル間の依存関係[依存対象] を に設定してから、ノード B の ID を入力します。
  • シナリオ 3
    • シナリオの説明: ノード A は 1 時間ごとに実行するようにスケジュールされています。ノード B は 1 日 1 回実行するようにスケジュールされています。ノード A はノード B に依存します。ノード B が 1 日に実行されると、ノード A は 24 サイクルを経て、スケジューリングシステムは 24 個のインスタンスを同時に生成して実行し始めます。
    • 解決策: ノード A を設定する場合は、[サイクル間の依存関係] を選択し、サイクル間依存関係[依存対象] を に設定します。
  • シナリオ 4
    • シナリオの説明: ノードは、前サイクルでノードによって生成されたデータに依存します。前サイクルでデータが生成された時刻を決定する必要があります。
    • 解決策: ノードを設定する場合は、[サイクル間の依存関係] を選択し、サイクル間依存関係[依存対象] を に設定します。