DAG dipendenti dalle attività

Questa pagina illustra i passaggi per consentire ai grafici diretti aciclici (DAG) dipendenti dalle attività di specificare le dipendenze delle attività tra i nodi delle tabelle SQL all'interno di un singolo DAG, anziché fare affidamento sulla pianificazione di cron su più DAG. Le impostazioni personalizzabili vengono utilizzate per generare DAG di Cloud Composer con più nodi di aggiornamento della tabella che dipendono l'uno dall'altro. Cortex Framework fornisce le impostazioni consigliate per i DAG SAP (ECC e S/4HANA) dipendenti dalle attività. Tuttavia, puoi personalizzarli ulteriormente o definire DAG dipendenti dalle attività per qualsiasi origine dati.

Attiva i DAG dipendenti dalle attività

  1. Modifica il file config.json impostando il campo enableTaskDependencies su True. Questa impostazione attiva la ricerca di Cortex Framework per i file di impostazioni dei report dipendenti dalle attività con il suffisso _task_dep.yaml.
  2. Crea un file di impostazioni dei report dedicato con il suffisso _task_dep.yaml per ogni origine dati che richiede dipendenze delle attività. Per maggiori dettagli, consulta Definire le impostazioni di generazione di report in base alle attività.
  3. Personalizza le dipendenze delle attività aggiungendo table_setting.dag_setting come nuova sezione ai nodi di tipo table. Per maggiori dettagli, consulta Specificare e personalizzare le dipendenze delle attività.
  4. Crea Cortex Framework utilizzando il processo di compilazione standard.
  5. Esamina i file generati che si trovano nel bucket di destinazione in dags/data_source/reporting/task_dep_dags/dag_name. Questa cartella conterrà un file Python che definisce il DAG di Cloud Composer e un file SQL con la query di aggiornamento per ogni nodo della tabella all'interno del DAG.
  6. Copia i file nel bucket DAG di Cloud Composer per eseguire il deployment di Cortex Framework utilizzando il processo di compilazione standard.

Definire le impostazioni di generazione di report in base alle attività

Per ogni origine dati che richiede dipendenze delle attività, Cortex Framework si aspetta file di impostazioni di generazione di report dipendenti dalle attività con il suffisso _task_dep.yaml. Quando crei e aggiorni questi file, tieni presente quanto segue:

Per ulteriori informazioni sui campi disponibili nei file di impostazioni dei report, consulta dag_types.py.

Specificare e personalizzare le dipendenze delle attività

Personalizza le dipendenze delle attività aggiungendo table_setting.dag_setting come nuova sezione ai nodi di tipo table:

    - sql_file: dependent_table2.sql
      type: table
      table_setting:
        dag_setting:
          name: "dag1"
          parents: ["dependent_table1.sql"]
  • Le impostazioni DAG includono due campi:

    • name: una stringa obbligatoria per tutti i nodi di un DAG dipendente dalle attività che designa il nome del DAG a cui appartiene il nodo della tabella. Sono inclusi i nodi di primo livello a cui fanno riferimento altri nodi all'interno del DAG come principali.
    • parents: un elenco facoltativo di stringhe contenenti il percorso sql_file di altri nodi di tabella all'interno della stessa DAG. Questi comandi principali devono essere eseguiti correttamente prima dell'attivazione del nodo.

Considerazioni aggiuntive:

  • I nodi senza nodi principali definiti sono considerati nodi di primo livello e verranno eseguiti all'inizio del DAG.
  • Per almeno un nodo di primo livello deve essere definito table_setting.load_frequency, che verrà utilizzato come pianificazione del DAG.
  • Se più nodi di primo livello hanno definito load_frequency, devono essere gli stessi.
  • I nodi secondari che hanno definito parents non possono definire load_frequency.
  • I nodi per i quali non è definito dag_setting verranno generati come prima come DAG con un singolo nodo di aggiornamento della tabella e senza dipendenze delle attività.
  • Altri tipi di nodi, come visualizzazioni e script, non possono essere inclusi nei DAG dipendenti dalle attività, che generano solo nodi con DML per aggiornare le tabelle.