タスク依存 DAG
このページでは、複数の DAG にわたる cron スケジュールに依存するのではなく、タスク依存の有向非巡回グラフ(DAG)を有効にして、単一の DAG 内の SQL テーブルノード間のタスク依存関係を指定する手順について説明します。カスタマイズ可能な設定を使用して、相互に依存する複数のテーブル更新ノードを持つ Managed Service for Apache Airflow DAG を生成します。 Cortex Framework には、タスク依存の SAP DAG(ECC と S/4HANA)の推奨設定が用意されています。ただし、さらに カスタマイズすることも、任意の データソースのタスク依存 DAG を定義することもできます。
タスク依存 DAG を有効にする
- config.json ファイルを変更して、
enableTaskDependenciesフィールドをTrueに設定します。この設定により、Cortex Framework は、接尾辞_task_dep.yamlを持つタスク依存のレポート設定ファイルを検索します。 - タスク依存関係を必要とするデータソースごとに、接尾辞
_task_dep.yamlを持つ専用のレポート設定ファイルを作成します。詳細については、 タスク依存のレポート設定を定義するをご覧ください。 tableタイプのノードに新しいセクションとしてtable_setting.dag_settingを追加して、タスクの依存関係をカスタマイズします。 詳細については、 タスクの依存関係を指定してカスタマイズするをご覧ください。- 標準のビルドプロセスを使用して Cortex Framework をビルドします。
- 生成されたファイルを確認します。これらのファイルは、ターゲット バケットの
dags/data_source/reporting/task_dep_dags/dag_nameにあります。このフォルダには、Managed Airflow DAG を定義する Python ファイルと、DAG 内の各テーブルノードの更新クエリを含む SQL ファイルが含まれます。 - 標準のビルドプロセスを使用して Cortex Framework をデプロイするには、ファイルを Managed Airflow DAG バケットにコピーします。
タスク依存のレポート設定を定義する
タスク依存関係を必要とするデータソースごとに、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が定義されていないノードは、単一のテーブル更新ノードとタスク依存関係のない DAG として、以前と同じように生成されます。- ビューやスクリプトなどの他のノードタイプは、タスク依存 DAG に含めることはできません。タスク依存 DAG は、テーブルを更新する DML を使用するノードのみを生成します。