DAG dépendants des tâches

Cette page décrit la procédure à suivre pour activer les graphes orientés acycliques (DAG) dépendants des tâches afin de spécifier les dépendances de tâches entre les nœuds de table SQL d'un seul DAG, plutôt que de s'appuyer sur la planification cron sur plusieurs DAG. Les paramètres personnalisables sont utilisés pour générer des DAG Cloud Composer avec plusieurs nœuds d'actualisation de table qui dépendent les uns des autres. Cortex Framework fournit les 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 toutes les sources 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 de fichiers de paramètres de création de rapports dépendants des tâches avec le suffixe _task_dep.yaml dans le framework Cortex.
  2. Créez un fichier de paramètres de création de rapports 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 la section Définir des paramètres de création de rapports dépendant 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 la section Spécifier et personnaliser les dépendances de tâche.
  4. Compilez 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 Cloud Composer 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 Cloud Composer pour déployer Cortex Framework à l'aide du processus de compilation standard.

Définir des paramètres de création de rapports dépendant des tâches

Pour chaque source de données nécessitant des dépendances de tâches, Cortex Framework attend des fichiers de paramètres de création de rapports dépendants 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 de tâche

Personnalisez les dépendances de tâche 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 obligatoire pour tous les nœuds d'un DAG dépendant des tâches qui désigne le nom du DAG auquel le nœud de table appartient. 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 considérations:

  • 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 niveau supérieur doit avoir table_setting.load_frequency défini, qui sera utilisé comme planification 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 avant, en tant que 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 DML pour actualiser les tables.