DAG dépendant des tâches

Cette page décrit les étapes à suivre pour activer les DAG (Directed Acyclic Graphs) dépendants des tâches afin de spécifier les dépendances entre les nœuds de table SQL au sein d'un même DAG, plutôt que de s'appuyer sur la planification cron sur plusieurs DAG. Des paramètres personnalisables sont utilisés pour générer des DAG Managed Service pour Apache Airflow avec plusieurs nœuds d'actualisation de tables qui dépendent les uns des autres. Cortex Framework fournit des paramètres recommandés pour les DAG SAP (ECC et S/4HANA) dépendants des tâches. Toutefois, vous pouvez les personnaliser davantage ou définir des DAG dépendants des tâches pour n'importe quelle source de données.

Activer les DAG dépendants des tâches

  1. Modifiez le fichier config.json en définissant le champ enableTaskDependencies sur True. Ce paramètre active la recherche par Cortex Framework des fichiers de paramètres de création de rapports dépendant des tâches avec le suffixe _task_dep.yaml.
  2. Créez un fichier de paramètres de rapport dédié avec le suffixe _task_dep.yaml pour chaque source de données nécessitant des dépendances de tâches. Pour en savoir plus, consultez Définir des paramètres de création de rapports dépendants des tâches.
  3. Personnalisez les dépendances de tâches en ajoutant table_setting.dag_setting en tant que nouvelle section aux nœuds de type table. Pour en savoir plus, consultez Spécifier et personnaliser les dépendances de tâches.
  4. Créez Cortex Framework à l'aide du processus de compilation standard.
  5. Examinez les fichiers générés qui se trouvent dans le bucket cible sous dags/data_source/reporting/task_dep_dags/dag_name. Ce dossier contiendra un fichier Python définissant le DAG Managed Airflow et un fichier SQL avec la requête d'actualisation pour chaque nœud de table du DAG.
  6. Copiez les fichiers dans le bucket DAG Managed Airflow pour déployer Cortex Framework à l'aide du processus de compilation standard.

Définir des paramètres de reporting dépendants des tâches

Pour chaque source de données nécessitant des dépendances de tâches, Cortex Framework s'attend à trouver des fichiers de paramètres de création de rapports dépendant des tâches avec le suffixe _task_dep.yaml. Lorsque vous créez et mettez à jour ces fichiers, tenez compte des points suivants :

Pour en savoir plus sur les champs disponibles dans les fichiers de paramètres de création de rapports, consultez dag_types.py.

Spécifier et personnaliser les dépendances entre les tâches

Personnalisez les dépendances de tâches en ajoutant table_setting.dag_setting en tant que nouvelle section aux nœuds de type table :

    - sql_file: dependent_table2.sql
      type: table
      table_setting:
        dag_setting:
          name: "dag1"
          parents: ["dependent_table1.sql"]
  • Les paramètres du DAG incluent deux champs :

    • name : chaîne requise pour tous les nœuds d'un DAG dépendant des tâches, qui désigne le nom du DAG auquel appartient le nœud de table. Cela inclut les nœuds de niveau supérieur qui sont référencés en tant que parent par d'autres nœuds du DAG.
    • parents : liste facultative de chaînes contenant le chemin sql_file d'autres nœuds de table dans le même DAG. Ces parents doivent s'exécuter correctement avant que le nœud ne soit déclenché.

Autres points à prendre en compte :

  • Les nœuds sans parents définis sont considérés comme des nœuds de niveau supérieur et s'exécutent au début du DAG.
  • Au moins un nœud de premier niveau doit avoir table_setting.load_frequency défini, qui sera utilisé comme calendrier du DAG.
  • Si plusieurs nœuds de premier niveau ont défini load_frequency, ils doivent être identiques.
  • Les nœuds enfants pour lesquels parents est défini ne peuvent pas définir load_frequency.
  • Les nœuds pour lesquels dag_setting n'est pas défini seront générés comme auparavant, sous la forme d'un DAG avec un seul nœud d'actualisation de table et aucune dépendance de tâche.
  • Les autres types de nœuds, tels que les vues et les scripts, ne peuvent pas être inclus dans les DAG dépendants des tâches, qui ne génèrent que des nœuds avec LMD pour actualiser les tables.