DAGs dependentes de tarefas

Esta página descreve as etapas para ativar gráficos acíclicos direcionados (DAGs) dependentes de tarefas para especificar dependências de tarefas entre nós de tabelas SQL em um único DAG, em vez de depender da programação cron em vários DAGs. As configurações personalizáveis são usadas para gerar DAGs do Cloud Composer com vários nós de atualização de tabela que dependem uns dos outros. O Cortex Framework fornece configurações recomendadas para DAGs do SAP (ECC e S/4HANA) dependentes de tarefas. No entanto, é possível personalizá-los ainda mais ou definir DAGs dependentes de tarefas para qualquer fonte de dados.

Ativar DAGs dependentes de tarefas

  1. Modifique o arquivo config.json definindo o campo enableTaskDependencies como True. Essa configuração ativa a pesquisa do Cortex Framework para arquivos de configurações de relatórios dependentes de tarefas com o sufixo _task_dep.yaml.
  2. Crie um arquivo de configurações de relatórios dedicado com o sufixo _task_dep.yaml para cada fonte de dados que exige dependências de tarefas. Para mais detalhes, consulte Definir configurações de relatórios dependentes de tarefas.
  3. Personalize as dependências de tarefas adicionando table_setting.dag_setting como uma nova seção aos nós do tipo table. Para mais detalhes, consulte Especificar e personalizar dependências de tarefas.
  4. Crie o Cortex Framework usando o processo de build padrão.
  5. Examine os arquivos gerados que estão localizados no bucket de destino em dags/data_source/reporting/task_dep_dags/dag_name. Essa pasta vai conter um arquivo Python que define o DAG do Cloud Composer e um arquivo SQL com a consulta de atualização para cada nó de tabela no DAG.
  6. Copie os arquivos para o bucket do DAG do Cloud Composer para implantar o Cortex Framework usando o processo de build padrão.

Definir configurações de relatórios dependentes da tarefa

Para cada origem de dados que exige dependências de tarefas, o Cortex Framework espera arquivos de configurações de relatórios dependentes de tarefas com o sufixo _task_dep.yaml. Ao criar e atualizar esses arquivos, considere o seguinte:

Para mais informações sobre os campos disponíveis nos arquivos de configurações de relatórios, consulte dag_types.py.

Especificar e personalizar dependências de tarefas

Personalize as dependências de tarefas adicionando table_setting.dag_setting como uma nova seção aos nós do tipo table:

    - sql_file: dependent_table2.sql
      type: table
      table_setting:
        dag_setting:
          name: "dag1"
          parents: ["dependent_table1.sql"]
  • As configurações de DAG incluem dois campos:

    • name: uma string obrigatória para todos os nós em um DAG dependente de tarefas que designa o nome do DAG ao qual o nó da tabela pertence. Isso inclui nós de nível superior que são referenciados como pais por outros nós no DAG.
    • parents: uma lista opcional de strings que contém o caminho sql_file de outros nós de tabela no mesmo DAG. Esses pais precisam ser executados com sucesso antes que o nó seja acionado.

Outras considerações:

  • Os nós sem pais definidos são considerados nós de nível superior e são executados no início do DAG.
  • Pelo menos um nó de nível superior precisa ter table_setting.load_frequency definido, que será usado como a programação DAG.
  • Se vários nós de nível superior tiverem load_frequency definidos, eles precisarão ser iguais.
  • Os nós filhos que têm parents definidos não podem definir load_frequency.
  • Os nós que não tiverem dag_setting definidos serão gerados da mesma forma que antes, como um DAG com um único nó de atualização de tabela e sem dependências de tarefas.
  • Outros tipos de nó, como visualizações e scripts, não podem ser incluídos em DAGs dependentes de tarefas, que só geram nós com DML para atualizar tabelas.