タスク依存の DAG
このページでは、複数の DAG にわたる cron スケジュールに依存せずに、タスク依存の有向非巡回グラフ(DAG)を有効にして、単一の DAG 内の SQL テーブルノード間のタスク依存関係を指定するための手順について説明します。カスタマイズ可能な設定を使用して、相互に依存する複数のテーブル更新ノードを含む Cloud Composer DAG を生成します。Cortex Framework には、タスク依存の SAP DAG(ECC と S/4HANA)に推奨される設定が用意されています。ただし、さらにカスタマイズしたり、任意のデータソースに対してタスク依存の DAG を定義したりできます。
タスク依存の DAG を有効にする
enableTaskDependencies
フィールドをTrue
に設定して、config.json ファイルを変更します。この設定により、末尾が_task_dep.yaml
のタスク依存レポート設定ファイルの検索が Cortex Framework で有効になります。- タスクの依存関係を必要とするデータソースごとに、末尾に
_task_dep.yaml
が付いた専用のレポート設定ファイルを作成します。詳細については、タスク依存のレポート設定を定義するをご覧ください。 - タスクの依存関係をカスタマイズするには、
table
タイプのノードにtable_setting.dag_setting
を新しいセクションとして追加します。詳細については、タスクの依存関係を指定してカスタマイズするをご覧ください。 - 標準のビルドプロセスを使用して Cortex Framework をビルドします。
- ターゲット バケットの
dags/data_source/reporting/task_dep_dags/dag_name
にある生成されたファイルを調べます。このフォルダには、Cloud Composer DAG を定義する Python ファイルと、DAG 内の各テーブルノードの更新クエリを含む SQL ファイルが含まれます。 - ファイルを Cloud Composer DAG バケットにコピーして、標準のビルドプロセスを使用して Cortex Framework をデプロイします。
タスクに依存するレポート設定を定義する
タスクの依存関係が必要なデータソースごとに、Cortex Framework はタスク依存のレポート設定ファイル(接尾辞 _task_dep.yaml
)を想定しています。これらのファイルを作成および更新する際は、次の点を考慮してください。
- SAP の場合は、提供されている設定ファイル
reporting_settings_ecc_task_dep.yaml
とreporting_settings_s4_task_dep.yaml
をカスタマイズして使用できます。 - 他のデータソースの場合は、元の設定とともに、タスクに依存する独自のレポート設定を作成します(例:
reporting_settings_task_dep.yaml.
)。
レポート設定ファイルで使用できるフィールドの詳細については、dag_types.py をご覧ください。
タスクの依存関係を指定してカスタマイズする
タスクの依存関係をカスタマイズするには、table
タイプのノードに新しいセクションとして table_setting.dag_setting
を追加します。
- sql_file: dependent_table2.sql
type: table
table_setting:
dag_setting:
name: "dag1"
parents: ["dependent_table1.sql"]
DAG の設定には、次の 2 つのフィールドがあります。
name
: タスク依存 DAG 内のすべてのノードに必要な文字列。テーブルノードが属する DAG の名前を指定します。これには、DAG 内の他のノードによって親として参照される最上位ノードが含まれます。parents
: 同じ DAG 内の他のテーブルノードのsql_file
パスを含む文字列のリスト(省略可)。これらの親は、ノードがトリガーされる前に正常に実行されている必要があります。
その他の考慮事項:
- 親が定義されていないノードは最上位ノードと見なされ、DAG の開始時に実行されます。
- 少なくとも 1 つの最上位ノードで
table_setting.load_frequency
を定義する必要があります。これは DAG スケジュールとして使用されます。 - 複数のトップレベル ノードで
load_frequency
が定義されている場合は、同じにする必要があります。 parents
が定義されている子ノードでは、load_frequency
を定義できません。dag_setting
が定義されていないノードは、テーブル更新ノードが 1 つあり、タスクの依存関係がない DAG として、以前と同じように生成されます。- ビューやスクリプトなどの他のノードタイプは、タスク依存の DAG に含めることはできません。DAG は、テーブルを更新する DML を含むノードのみを生成します。