DAGs dependentes de tarefas
Esta página descreve os passos para ativar os gráficos acíclicos dirigidos (DAGs) dependentes de tarefas para especificar dependências de tarefas entre nós de tabelas SQL num único DAG, em vez de depender da programação cron em vários DAGs. As definições personalizáveis são usadas para gerar DAGs do Cloud Composer com vários nós de atualização de tabelas que dependem uns dos outros. A framework Cortex fornece definições recomendadas para DAGs SAP dependentes de tarefas (ECC e S/4HANA). No entanto, pode personalizá-los ainda mais ou definir DAGs dependentes de tarefas para quaisquer origens de dados.
Ative os DAGs dependentes de tarefas
- Modifique o ficheiro config.json definindo o campo
enableTaskDependencies
comoTrue
. Esta definição ativa a pesquisa do framework Cortex de ficheiros de definições de relatórios dependentes de tarefas com o sufixo_task_dep.yaml
. - Crie um ficheiro de definições de relatórios dedicado com o sufixo
_task_dep.yaml
para cada origem de dados que exija dependências de tarefas. Para mais detalhes, consulte o artigo Defina as definições de relatórios dependentes de tarefas. - Personalize as dependências de tarefas adicionando
table_setting.dag_setting
como uma nova secção aos nós do tipotable
. Para mais detalhes, consulte o artigo Especifique e personalize as dependências de tarefas. - Crie a estrutura do Cortex usando o processo de compilação padrão.
- Examine os ficheiros gerados localizados no contentor de destino em
dags/data_source/reporting/task_dep_dags/dag_name
. Esta pasta vai conter um ficheiro Python que define o DAG do Cloud Composer e um ficheiro SQL com a consulta de atualização para cada nó de tabela no DAG. - Copie os ficheiros para o contentor DAG do Cloud Composer para implementar o Cortex Framework através do processo de compilação padrão.
Defina as definições de relatórios dependentes de tarefas
Para cada origem de dados que requer dependências de tarefas, o Cortex Framework espera ficheiros de definições de relatórios dependentes de tarefas com o sufixo _task_dep.yaml
.
Ao criar e atualizar estes ficheiros, considere o seguinte:
- Para o SAP, pode personalizar e usar os ficheiros de definições fornecidos
reporting_settings_ecc_task_dep.yaml
ereporting_settings_s4_task_dep.yaml
. - Para outras origens de dados, crie as suas próprias definições de relatórios dependentes de tarefas juntamente com as originais, por exemplo:
reporting_settings_task_dep.yaml.
Para mais informações sobre os campos disponíveis nos ficheiros de definições de relatórios, consulte dag_types.py.
Especifique e personalize as dependências de tarefas
Personalize as dependências de tarefas adicionando table_setting.dag_setting
como uma nova secçã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 definições do DAG incluem dois campos:
name
: uma string obrigatória para todos os nós num DAG dependente de tarefas que designa o nome do DAG ao qual o nó da tabela pertence. Isto inclui nós de nível superior que são referenciados como principais por outros nós no DAG.parents
: Uma lista opcional de strings que contém o caminhosql_file
de outros nós de tabela no mesmo DAG. Estes pais têm de ser executados com êxito antes de o nó ser acionado.
Considerações adicionais:
- 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 tem de ter
table_setting.load_frequency
definido, que vai ser usado como a programação do DAG. - Se vários nós de nível superior tiverem
load_frequency
definido, têm de ser iguais. - Os nós secundários que têm
parents
definido não podem definirload_frequency
. - Os nós que não têm
dag_setting
definidos são gerados da mesma forma que antes, como um DAG com um único nó de atualização da 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 apenas geram nós com DML para atualizar tabelas.