DAGs dependientes de tareas
En esta página, se describen los pasos para habilitar los grafos acíclicos dirigidos (DAG) dependientes de tareas para especificar las dependencias de tareas entre los nodos de tablas SQL dentro de un solo DAG, en lugar de depender de la programación de cron en varios DAG. Se usan parámetros de configuración personalizables para generar DAGs de Managed Service para Apache Airflow con varios nodos de actualización de tablas que dependen entre sí. El Cortex Framework proporciona parámetros de configuración recomendados para los DAG de SAP (ECC y S/4HANA) que dependen de la tarea. Sin embargo, puedes personalizarlos aún más o definir DAGs dependientes de la tarea para cualquier fuente de datos.
Habilita los DAGs dependientes de tareas
- Modifica el archivo config.json configurando el campo
enableTaskDependenciesenTrue. Este parámetro de configuración activa la búsqueda del Cortex Framework de archivos de configuración de informes dependientes de la tarea con el sufijo_task_dep.yaml. - Crea un archivo de configuración de informes dedicado con el sufijo
_task_dep.yamlpara cada fuente de datos que requiera dependencias de tareas. Para obtener más detalles, consulta Cómo definir la configuración de informes dependientes de la tarea. - Personaliza las dependencias de la tarea agregando
table_setting.dag_settingcomo una nueva sección a los nodos de tipotable. Para obtener más detalles, consulta Cómo especificar y personalizar las dependencias de tareas. - Compila el Cortex Framework con el proceso de compilación estándar.
- Examina los archivos generados que se encuentran en el bucket de destino en
dags/data_source/reporting/task_dep_dags/dag_name. Esta carpeta contendrá un archivo de Python que define el DAG de Managed Airflow y un archivo SQL con la consulta de actualización para cada nodo de tabla dentro del DAG. - Copia los archivos en el bucket de DAG de Managed Airflow para implementar Cortex Framework con el proceso de compilación estándar.
Cómo definir la configuración de informes dependientes de la tarea
Para cada fuente de datos que requiere dependencias de tareas, Cortex Framework espera archivos de configuración de informes dependientes de tareas con el sufijo _task_dep.yaml.
Cuando crees y actualices estos archivos, ten en cuenta lo siguiente:
- En el caso de SAP, puedes personalizar y usar los archivos de configuración proporcionados
reporting_settings_ecc_task_dep.yamlyreporting_settings_s4_task_dep.yaml. - Para otras fuentes de datos, crea tu propia configuración de informes dependientes de la tarea junto con la original, por ejemplo:
reporting_settings_task_dep.yaml.
Para obtener más información sobre los campos disponibles en los archivos de configuración de informes, consulta dag_types.py.
Especifica y personaliza las dependencias de tareas
Personaliza las dependencias de la tarea agregando table_setting.dag_setting como una sección nueva a los nodos de tipo table:
- sql_file: dependent_table2.sql
type: table
table_setting:
dag_setting:
name: "dag1"
parents: ["dependent_table1.sql"]
La configuración del DAG incluye dos campos:
name: Es una cadena obligatoria para todos los nodos de un DAG dependiente de tareas que designa el nombre del DAG al que pertenece el nodo de la tabla. Esto incluye los nodos de nivel superior a los que otros nodos dentro del DAG hacen referencia como elemento principal.parents: Es una lista opcional de cadenas que contiene la ruta de accesosql_filede otros nodos de tabla dentro del mismo DAG. Estos elementos superiores deben ejecutarse correctamente antes de que se active el nodo.
Consideraciones adicionales:
- Los nodos sin elementos superiores definidos se consideran nodos de nivel superior y se ejecutarán al inicio del DAG.
- Al menos un nodo de nivel superior debe tener definido
table_setting.load_frequency, que se usará como la programación del DAG. - Si varios nodos de nivel superior tienen definido
load_frequency, deben ser iguales. - Los nodos secundarios que tienen definido
parentsno pueden definirload_frequency. - Los nodos que no tienen definido
dag_settingse generarán de la misma manera que antes, como un DAG con un solo nodo de actualización de la tabla y sin dependencias de tareas. - Otros tipos de nodos, como las vistas y los scripts, no se pueden incluir en los DAG dependientes de tareas, que solo generan nodos con DML para actualizar tablas.