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 dependencias de tareas entre nodos de tablas de SQL dentro de un solo DAG, en lugar de depender de la programación de cron en varios DAG. La configuración personalizable se usa para generar DAG de Cloud Composer con varios nodos de actualización de tablas que dependen entre sí. Cortex Framework proporciona la configuración recomendada para las 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 tareas para cualquier fuente de datos.
Habilita los DAGs dependientes de tareas
- Para modificar el archivo config.json, establece el campo
enableTaskDependencies
enTrue
. Este parámetro de configuración activa la búsqueda de 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.yaml
para cada fuente de datos que requiera dependencias de tareas. Para obtener más información, consulta Define la configuración de informes dependiente de la tarea. - Para personalizar las dependencias de la tarea, agrega
table_setting.dag_setting
como una sección nueva a los nodos de tipotable
. Para obtener más detalles, consulta Especifica y personaliza las dependencias de tareas. - Compila 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 Python que define el DAG de Cloud Composer 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 Cloud Composer para implementar Cortex Framework con el proceso de compilación estándar.
Define la configuración de informes dependiente de la tarea
Para cada fuente de datos que requiera 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.yaml
yreporting_settings_s4_task_dep.yaml
. - Para otras fuentes de datos, crea tu propia configuración de informes dependiente 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 las tareas
Para personalizar las dependencias de la tarea, agrega 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 del DAG hacen referencia como superiores.parents
: Es una lista opcional de cadenas que contiene la ruta de accesosql_file
de 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 comienzo del DAG.
- Al menos un nodo de nivel superior debe tener definido
table_setting.load_frequency
, que se usará como programación de DAG. - Si varios nodos de nivel superior tienen definido
load_frequency
, deben ser los mismos. - Los nodos secundarios que tienen
parents
definido no pueden definirload_frequency
. - Los nodos que no tengan definido
dag_setting
se generarán de la misma manera que antes como un DAG con un solo nodo de actualización de tablas y sin dependencias de tareas. - No se pueden incluir otros tipos de nodos, como vistas y secuencias de comandos, en los DAG dependientes de tareas, que solo generan nodos con DML para actualizar tablas.