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

  1. Modifica el archivo config.json configurando el campo enableTaskDependencies en True. 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.
  2. 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 detalles, consulta Cómo definir la configuración de informes dependientes de la tarea.
  3. Personaliza las dependencias de la tarea agregando table_setting.dag_setting como una nueva sección a los nodos de tipo table. Para obtener más detalles, consulta Cómo especificar y personalizar las dependencias de tareas.
  4. Compila el Cortex Framework con el proceso de compilación estándar.
  5. 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.
  6. 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:

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 acceso sql_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 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 parents no pueden definir load_frequency.
  • Los nodos que no tienen definido dag_setting se 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.