DAGs dependentes de tarefas
Esta página descreve as etapas para ativar gráficos acíclicos direcionados (DAGs) dependentes de tarefas e especificar dependências entre nós de tabela SQL em um único DAG, em vez de usar o agendamento do cron em vários DAGs. As configurações personalizáveis são usadas para gerar DAGs do Serviço gerenciado para Apache Airflow com vários nós de atualização de tabela que dependem uns dos outros. O Cortex Framework oferece configurações recomendadas para DAGs do SAP (ECC e S/4HANA) dependentes de tarefas. No entanto, é possível personalizar ainda mais ou definir DAGs dependentes de tarefas para qualquer fonte de dados.
Ativar DAGs dependentes de tarefas
- Modifique o arquivo config.json definindo o campo
enableTaskDependenciescomoTrue. Essa configuração ativa a pesquisa do Cortex Framework por arquivos de configurações de relatórios dependentes de tarefas com o sufixo_task_dep.yaml. - Crie um arquivo de configurações de relatórios dedicado com o sufixo
_task_dep.yamlpara cada fonte de dados que exige dependências de tarefas. Para mais detalhes, consulte Definir configurações de relatórios dependentes de tarefas. - Personalize as dependências da tarefa adicionando
table_setting.dag_settingcomo uma nova seção aos nós do tipotable. Para mais detalhes, consulte Especificar e personalizar dependências de tarefas. - Crie o Cortex Framework usando o processo de build padrão.
- Examine os arquivos gerados 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 Airflow Gerenciado e um arquivo SQL com a consulta de atualização para cada nó de tabela no DAG. - Copie os arquivos para o bucket de DAG do Airflow Gerenciado para implantar o Cortex Framework usando o processo de build padrão.
Definir configurações de relatórios dependentes de tarefas
Para cada fonte 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 o SAP, é possível personalizar e usar os arquivos de configuração fornecidos
reporting_settings_ecc_task_dep.yamlereporting_settings_s4_task_dep.yaml. - Para outras fontes de dados, crie suas próprias configurações de relatórios dependentes de tarefas ao lado das originais. Por exemplo:
reporting_settings_task_dep.yaml.
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 da tarefa 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 do 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 a que o nó da tabela pertence. Isso inclui nós de nível superior, que são referenciados como um pai por outros nós no DAG.parents: uma lista opcional de strings que contém o caminhosql_filede outros nós de tabela no mesmo DAG. Esses jobs precisam ser executados com êxito antes que o nó seja acionado.
Outras considerações:
- Os nós sem pais definidos são considerados de nível superior e serão executados no início do DAG.
- Pelo menos um nó de nível superior precisa ter
table_setting.load_frequencydefinido, que será usado como a programação do DAG. - Se vários nós de nível superior tiverem
load_frequencydefinido, eles precisarão ser iguais. - Os nós filhos que têm
parentsdefinido não podem definirload_frequency. - Os nós que não têm
dag_settingdefinido 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ós, 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.