タスク依存 DAG

このページでは、タスク依存の有向非巡回グラフ(DAG)を有効にして、複数の DAG にわたる cron スケジューリングに依存するのではなく、単一の DAG 内の SQL テーブルノード間のタスク依存関係を指定する手順について説明します。カスタマイズ可能な設定は、相互に依存する複数のテーブル更新ノードを含む Managed Service for Apache Airflow DAG を生成するために使用されます。Cortex Framework は、タスク依存の SAP DAG(ECC と S/4HANA)に推奨設定を提供します。ただし、これらの DAG をさらにカスタマイズしたり、任意のデータソースのタスク依存 DAG を定義したりできます。

タスク依存 DAG を有効にする

  1. enableTaskDependencies フィールドを True に設定して、config.json ファイルを変更します。この設定を有効にすると、Cortex Framework は、接尾辞 _task_dep.yaml のタスク依存のレポート設定ファイルを検索します。
  2. タスクの依存関係を必要とするデータソースごとに、接尾辞 _task_dep.yaml を使用して専用のレポート設定ファイルを作成します。詳しくは、タスク依存のレポート設定を定義するをご覧ください。
  3. table 型ノードに新しいセクションとして table_setting.dag_setting を追加して、タスクの依存関係をカスタマイズします。詳細については、タスクの依存関係を指定してカスタマイズするをご覧ください。
  4. 標準のビルドプロセスを使用して Cortex Framework をビルドします。
  5. dags/data_source/reporting/task_dep_dags/dag_name のターゲット バケットにある生成されたファイルを確認します。このフォルダには、Managed Airflow DAG を定義する Python ファイルと、DAG 内の各テーブルノードの更新クエリを含む SQL ファイルが含まれます。
  6. ファイルを Managed Airflow DAG バケットにコピーして、標準のビルドプロセスを使用して Cortex Framework をデプロイします。

タスク依存のレポート設定を定義する

タスクの依存関係を必要とするデータソースごとに、Cortex Framework は、接尾辞 _task_dep.yaml のタスク依存レポート設定ファイルを想定しています。これらのファイルを作成して更新する際は、次の点を考慮してください。

  • SAP の場合は、提供されている設定ファイル reporting_settings_ecc_task_dep.yamlreporting_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 を含むノードのみを生成します。