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
- Modifiez le fichier config.json en définissant le champ
enableTaskDependenciessurTrue. 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. - Créez un fichier de paramètres de rapport dédié avec le suffixe
_task_dep.yamlpour 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. - Personnalisez les dépendances de tâches en ajoutant
table_setting.dag_settingen tant que nouvelle section aux nœuds de typetable. Pour en savoir plus, consultez Spécifier et personnaliser les dépendances de tâches. - Créez Cortex Framework à l'aide du processus de compilation standard.
- 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. - 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 SAP, vous pouvez personnaliser et utiliser les fichiers de paramètres fournis
reporting_settings_ecc_task_dep.yamletreporting_settings_s4_task_dep.yaml. - Pour les autres sources de données, créez vos propres paramètres de reporting dépendants des tâches en plus de ceux d'origine. Par exemple :
reporting_settings_task_dep.yaml.
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 cheminsql_filed'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_frequencydé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
parentsest défini ne peuvent pas définirload_frequency. - Les nœuds pour lesquels
dag_settingn'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.