As dependências de agendamento definem as relações entre nós antecessores e sucessores em nós agendados periodicamente no DataWorks. Após a configuração de uma dependência de agendamento, o sistema aciona uma instância de nó sucessor somente depois que todas as suas instâncias antecessoras forem concluídas com êxito, garantindo a produção e o consumo de dados na ordem correta.
Como funciona
Uma dependência de agendamento especifica que um nó inicia apenas após o êxito de seus nós antecessores. Após a configuração, o sistema de agendamento do DataWorks orquestra automaticamente a ordem de execução. O sistema aciona uma instância sucessora somente quando todas as suas instâncias antecessoras tiverem sido concluídas com êxito e todas as outras condições, como tempo e disponibilidade de recursos, forem atendidas.
O DataWorks estabelece dependências correspondendo os nomes de saída dos nós antecessores aos nomes de entrada dos nós sucessores. O fluxo de trabalho principal para configurar uma dependência é o seguinte:
Configure a saída no nó antecessor: Adicione um nome de saída ao nó antecessor, geralmente no formato
project_name.table_name(por exemplo,my_project.dim_user), para representar a tabela de dados produzida pelo nó.Configure a entrada no nó sucessor: No nó sucessor, pesquise e selecione o nome de saída do nó antecessor como sua entrada (dependência). Isso estabelece a relação de dependência.
Análise automática (opcional): Para nós baseados em SQL, o DataWorks pode analisar automaticamente as instruções
INSERTeSELECTno código para identificar tabelas de entrada e saída e gerar a configuração de dependência. Também é possível ajustar manualmente a configuração analisada automaticamente. Para obter uma lista de tipos de nó compatíveis com análise automática, consulte Automatic parsing scenarios for different node types.
Cada nó deve ter pelo menos um nome de saída. O sistema gera automaticamente uma saída padrão para cada nó no formato project_name.nodeID_out. Essa saída padrão é mantida mesmo se você exclua todas as saídas personalizadas.
Regras e limitações
Vigência após a implantação: Uma dependência de agendamento entra em vigor somente após você envie e implante o nó no Operation Center. As configurações feitas no ambiente de desenvolvimento não são sincronizadas automaticamente com o ambiente de produção.
Status de agendamento antecessor e sucessor: Para que uma dependência funcione, tanto as instâncias do nó antecessor quanto as do sucessor devem ser geradas e estar em um estado de agendamento normal. Se um nó estiver mal configurado ou se uma instância antecessora estiver anormal, o nó poderá ficar isolado e não poderá ser agendado normalmente.
Restrição de dependência circular: O sistema proíbe dependências circulares (A depende de B e B depende de A), incluindo ciclos diretos e indiretos. Se uma dependência circular for detectada durante o envio, o sistema bloqueia a implantação e retorna um erro.
Tipos de dependência
O DataWorks oferece suporte a dois tipos de dependências de agendamento: dependência do mesmo ciclo e dependência entre ciclos, cada uma aplicável a diferentes cenários de negócios.
Conceitos prévios
Um ciclo é definido pelas schedule settings do nó. Refere-se ao intervalo de tempo entre duas instâncias agendadas adjacentes de um nó, determinado por sua frequência de agendamento. Por exemplo, para uma tarefa agendada diariamente, o ciclo anterior é a instância do dia anterior. Para uma tarefa agendada por hora, o ciclo anterior é a instância da hora anterior.
|
Frequência de agendamento |
Um ciclo |
|
Agendamento diário, semanal, mensal ou anual |
1 dia Nota
Para tarefas agendadas semanalmente, mensalmente ou anualmente, as instâncias ainda são geradas diariamente (as instâncias em dias não agendados são instâncias de simulação). Portanto, os cálculos de dependência baseiam-se na granularidade de dia, e a instância do ciclo anterior pode estar em estado de simulação. |
|
Agendamento por hora |
Intervalo de hora |
|
Agendamento por minuto |
Intervalo de minuto (por exemplo, a cada 5 minutos) |
Dois tipos de dependência
Exemplo: Um nó A agendado diariamente produz a tabela dim_user, e o nó sucessor B consome essa tabela:
Dependência do mesmo ciclo: A instância de B para hoje aguarda até que a instância de A para hoje seja concluída com êxito antes de executar. Ou seja, B consome dados produzidos por A no mesmo dia.
Dependência entre ciclos: A instância de B para hoje aguarda até que a instância de A para ontem seja concluída com êxito antes de executar. Ou seja, B consome dados produzidos por A no dia anterior.
|
Item de comparação |
Dependência do mesmo ciclo |
Dependência entre ciclos (depende do ciclo anterior) |
|
Significado |
A instância do ciclo atual deste nó depende do resultado da instância do nó antecessor no mesmo ciclo. |
A instância do ciclo atual deste nó depende do resultado da instância de um nó especificado no ciclo anterior. O nó especificado pode ser o próprio nó (autodependência), um nó filho sucessor direto ou qualquer outro nó. |
|
Representação no DAG |
Exibida como uma linha sólida. |
Exibida como uma linha tracejada. |
|
Cenários típicos |
O nó B precisa ler dados produzidos pelo nó A hoje. |
Um nó depende de dados produzidos no dia anterior (como recuperação de dados T-1); tarefas horárias/por minuto usam autodependência para alcançar execução serial e evitar execução simultânea em vários ciclos. |
|
Método de configuração |
Oferece suporte a análise automática, conexão por arrastar e soltar no fluxo de trabalho e adição manual. |
Na seção "Previous Cycle" do painel de configurações de agendamento, selecione o formulário de dependência e especifique o ID do nó. |
Observação: A dependência do mesmo ciclo e a dependência entre ciclos podem coexistir entre o mesmo par de nós, mas você deve definir claramente o significado de negócio de cada uma. Se você precisar apenas de uma dependência entre ciclos, lembre-se de excluir a dependência do mesmo ciclo gerada automaticamente pelo sistema. Caso contrário, a instância sucessora ainda aguardará a conclusão da instância antecessora no ciclo atual antes de executar, resultando em atrasos inesperados.
Guia de configuração de dependência de agendamento
Todos os nós devem ter dependências antecessoras configuradas antes de poderem ser implantados no Operation Center para agendamento automático. Se não existir dependência de dados, o nó deve depender de um nó virtual ou nó raiz. Ao configurar dependências, revise a lógica de negócios, esclareça os alvos e tipos de dependência e selecione o método de configuração mais apropriado para criar um fluxo de trabalho de dados robusto e estruturalmente claro.
1. Identificar alvos de dependência
Antes de configurar dependências, conclua as seguintes preparações:
Revise a linhagem: Confirme se as tabelas/partições produzidas pelo nó antecessor correspondem às tabelas/partições lidas pelo nó sucessor.
Verifique as configurações de agendamento: Garanta que o agendamento do nó, o tempo de vigência, os parâmetros de agendamento e outras configurações estejam corretamente definidos, pois as configurações de agendamento afetam diretamente o comportamento da dependência.
Selecione o alvo de dependência com base em como o nó atual depende dos dados.
|
Cenário 1: Depende da saída direta de um nó antecessor |
|
|
Cenário 2: Depende de dados antecessores não agendados (orientado por disponibilidade de dados) |
|
|
Cenário 3: Sem dependência direta de dados, mas existe associação de lógica de negócios |
|
2. Selecionar o tipo de dependência
Se o nó atual depende da saída direta de um nó antecessor (Cenário 1), determine ainda se os dados dependentes são do mesmo ciclo ou de um ciclo anterior do nó antecessor.
Critério central
Determine de qual ciclo o nó sucessor realmente lê a saída do nó antecessor. Na maioria dos cenários, os dados gravados por um nó em uma partição específica são determinados dinamicamente por parâmetros de agendamento. Consulte Scheduling parameters para entender como os parâmetros de agendamento são substituídos. Se você precisar depender de um nó dentro do mesmo workspace, verifique sua configuração de parâmetros de agendamento.
Como confirmar
-
Nó do mesmo workspace: Verifique os parâmetros de agendamento no código do nó antecessor. Determine se a partição gravada após a substituição do parâmetro é para "hoje" ou "ontem".
No ambiente de desenvolvimento, verifique a configuração de parâmetros de agendamento do nó antecessor e os detalhes do código. No ambiente de produção, verifique os resultados da substituição de parâmetros nos detalhes da instância.
-
Nó entre workspaces: Use o Data Map para visualizar as informações de partição da tabela antecessora e o histórico de alterações.
Confirme o valor real da partição gravada a cada dia.
Selecione o tipo
O código sucessor lê a partição antecessora do dia atual/ciclo atual: Dependência do mesmo ciclo.
O código sucessor lê a partição antecessora do dia anterior/ciclo anterior: Dependência entre ciclos.
Tarefas horárias/por minuto precisam de execução serial sem simultaneidade: Dependência entre ciclos (autodependência).
Consequências de não confirmar corretamente a linhagem:
Risco de dependência ausente: Se existir uma linhagem de tabela, mas nenhuma dependência de agendamento estiver configurada, a tarefa sucessora iniciará antes que a instância antecessora seja concluída com êxito, resultando em dados ausentes ou incompletos.
Risco de incompatibilidade de parâmetros: Se uma dependência estiver configurada, mas os parâmetros de partição estiverem desalinhados (por exemplo, o antecessor produz a partição de hoje, mas o sucessor lê a partição de ontem), isso resulta em erros de lógica de dados e anomalias de qualidade.
3. Configurar a dependência
Com base nos alvos e tipos de dependência confirmados nas etapas 1 e 2, selecione o método de configuração apropriado para definir a dependência.
O DataWorks oferece suporte a dependências entre tarefas com diferentes frequências de agendamento. Combinado com dependências do mesmo ciclo/entre ciclos e parâmetros de agendamento, isso permite uma ampla variedade de cenários de agendamento. Para obter detalhes, consulte:
4. Verificar a dependência de agendamento
Após a configuração e antes da implantação, verifique a dependência:
|
Método de verificação |
Descrição |
|
Visualize se a configuração atual de dependência de agendamento atende às expectativas antes da implantação.
|
|
|
Confirme se as alterações de dependência na versão atual atendem às expectativas e avalie o impacto na produção durante o envio do nó. Quando a análise automática está ativada, para garantir a saída normal de dados de produção, realize uma confirmação secundária das alterações de agendamento ao enviar um nó. Use este recurso para garantir que as alterações de dependência não afetem a saída de dados da tarefa de produção. |
|
|
Confirme no Operation Center se as dependências da tarefa agendada de produção atendem às expectativas após a implantação do nó.
|
Impacto da remoção de dependências
Durante a iteração de tarefas, você pode precisar remover ou ajustar dependências de agendamento existentes.
Antes de remover uma dependência, avalie o impacto no comportamento de agendamento da tarefa sucessora para evitar isolamento de tarefas ou incidentes de dados.
|
Cenário de dependência sucessora |
Impacto após a remoção |
Nível de risco |
|
O sucessor depende apenas do nó atual |
A tarefa sucessora torna-se um nó isolado, perde seu mecanismo de acionamento antecessor e deixa de ser agendada automaticamente. |
Alto |
|
O sucessor depende de vários nós pais |
A tarefa sucessora pode iniciar antes que os dados antecessores estejam prontos, resultando em dados ausentes ou erros de computação. |
Médio |
|
O sucessor depende de uma instância entre ciclos |
Se a dependência entre ciclos for removida, o nó sucessor poderá ler dados da data de negócios errada, resultando em confusão na lógica de dados. |
Médio |
Casos de uso
Construção em camadas de data warehouse offline: Configure dependências de ponta a ponta no pipeline ODS → DWD → DWS → ADS para garantir que os dados em cada camada sejam produzidos em ordem.
Pipeline ETL padrão: Configure dependências do mesmo ciclo para garantir que as tarefas sucessoras aguardem estritamente o êxito das instâncias antecessoras antes da execução, assegurando a ordem e a consistência do pipeline de processamento de dados.
Relatórios do dia seguinte (T+1): Configure dependências entre ciclos (deslocamento -1) para que a tarefa de hoje dependa dos dados completos de negócios de ontem, permitindo análise e saída precisas de dados do dia seguinte.
Agregação mista de multifrequência: Configure dependências entre ciclos para que tarefas de granularidade diária dependam de todas as instâncias de ciclo de tarefas de granularidade horária, garantindo que os dados subjacentes estejam totalmente prontos antes da agregação.
Acionador de disponibilidade de dados externos: Configure dependências personalizadas ou nós de verificação para confirmar que arquivos externos chegaram ou interfaces estão prontas antes de acionar o fluxo de trabalho, permitindo coordenação de agendamento entre sistemas.
Controle complexo de fluxo de trabalho: Use nós virtuais para agregar dependências de múltiplas ramificações como marcos de controle de fluxo de trabalho, simplificando a estrutura do pipeline e melhorando a visibilidade do monitoramento.
FAQ
A seguir estão cenários típicos. Para obter mais perguntas frequentes sobre dependências de agendamento, consulte FAQ about dependency relationships.
-
Unicidade do nó.
Os nós têm formas diferentes nos ambientes de desenvolvimento e produção, mas permanecem únicos: A configuração de dependência de agendamento do mesmo nó pode diferir entre o ambiente de desenvolvimento e o ambiente de produção. Ou seja, o mesmo nó pode ter duas formas diferentes nos ambientes de desenvolvimento e produção, mas o nó é único.
Remova as dependências sucessoras em ambos os ambientes antes de desimplantar um nó: Devido à unicidade do nó, para garantir que as tarefas sucessoras recuperem dados e executem corretamente, antes de desimplantar uma tarefa antecessora no DataWorks, remova primeiro a dependência nas configurações de agendamento do nó sucessor, reconfigure os nós antecessores dos quais o nó sucessor precisa depender e envie e implante as alterações. A tarefa antecessora só pode ser desimplantada após a dependência ser removida tanto no ambiente de desenvolvimento quanto no de produção.
-
Relacionado ao método de geração de instâncias.
Ao criar nós, garanta que os nós antecessores e sucessores usem o mesmo método de geração de instâncias. Caso contrário, a diferença nos instance generation methods pode fazer com que o nó antecessor gere instâncias no dia atual enquanto o nó sucessor gera instâncias no dia seguinte, resultando em instâncias sucessoras tornando-se isolated instances.
Se você alterar o agendamento de um nó existente e selecione a opção para gerar instâncias imediatamente após a implantação, as instâncias já geradas não serão excluídas automaticamente quando você modifique as dependências de agendamento do nó. As dependências das instâncias agendadas do dia podem tornar-se inconsistentes após a implantação do nó. Para obter detalhes, consulte Impact of immediate instance generation on the current day's scheduled instance dependencies.
-
Erro indicando mais de 200 dependências antecessoras ao atualizar um trabalho usando OpenAPI.
Detalhes do erro: 'One file could not have more than 200 inputs 'One file could not have more than 200 inputs'.
Adicione nós virtuais entre o antecessor e o sucessor no Data Studio para reduzir o número de dependências antecessoras diretas para o nó atual. Para obter detalhes sobre como configurar nós virtuais, consulte Create a virtual node