As dependências de agendamento no DataWorks definem as relações entre nós antecessores e sucessores para nós com acionamento automático (nós de tarefa executados periodicamente pelo sistema de agendamento). Após a configuração dessas dependências, o sistema garante que as instâncias dos nós sucessores sejam acionadas apenas depois que todas as instâncias dos nós antecessores forem executadas com êxito, assegurando a produção e o consumo de dados na ordem correta. Este tópico descreve os conceitos básicos, os tipos de dependência e os métodos de configuração para ajudar você a obter uma visão geral antes da configuração e localizar rapidamente a documentação aplicável ao seu cenário.
Visão geral
A dependência de agendamento é um mecanismo do DataWorks que define as relações entre nós antecessores e sucessores. Ao configurar essas dependências, você especifica que um nó inicia a execução somente após a conclusão bem-sucedida dos nós antecessores definidos, garantindo a ordem correta do processamento de dados. Com as dependências configuradas, o sistema de agendamento do DataWorks orquestra automaticamente a ordem de execução: uma instância sucessora é acionada apenas quando todas as instâncias antecessoras são executadas com êxito e condições como tempo e disponibilidade de recursos são atendidas.
O DataWorks estabelece relações de dependência entre nós correspondendo nomes de saída de nó a nomes de entrada de nó. Do ponto de vista do nó atual, configurar dependências envolve duas operações principais:
Configurar dependências antecessoras (entradas de nó): Adicione entradas ao nó atual para especificar suas dependências antecessoras. No painel de configuração, estabeleça relações de dependência pesquisando um nó antecessor pelo nome de saída do nó (recomendado), nome do nó ou ID do nó. A instância do nó atual inicia a execução apenas após a conclusão bem-sucedida de todas as instâncias dos nós antecessores especificados.
Configurar saídas sucessoras (saídas de nó): Configure nomes de saída para o nó atual como identificadores exclusivos que os nós sucessores podem usar para depender dele. Recomendamos o uso do formato
project_name.table_name(por exemplo,my_project.dim_user) como nome de saída para indicar claramente a tabela de dados produzida pelo nó. Após a configuração, os nós sucessores podem depender do nó atual referenciando esse nome de saída.
Análise automática (opcional) : Para nós do tipo SQL, o DataWorks pode analisar automaticamente as instruçõesINSERTeSELECTno código, identificar tabelas de entrada e saída e gerar configurações de dependência automaticamente. Também é possível ajustar manualmente os resultados da análise automática. Para visualizar os tipos de nó compatíveis com a análise automática, consulte Support for the automatic parsing feature .
Cada nó deve ter pelo menos um nome de saída. O sistema gera automaticamente uma saída padrão para cada nó. Mesmo se você excluir todas as saídas personalizadas, essa saída padrão será mantida.
Regras e restrições
Vigência após a implantação: As configurações de dependência de agendamento entram em vigor somente após a implantação do nó no Operation Center. Configurações feitas durante o desenvolvimento não são sincronizadas automaticamente com o ambiente de agendamento.
Status de agendamento antecessor e sucessor: As relações de dependência só funcionam quando as instâncias dos nós antecessores e sucessores são geradas e estão com status de agendamento normal. Se um nó estiver configurado incorretamente ou se uma instância antecessora apresentar anomalias, o nó poderá ficar isolado e não poderá ser agendado.
Restrição de dependência circular: O sistema proíbe dependências circulares entre nós (por exemplo, A depende de B e B depende de A), incluindo ciclos diretos e indiretos. Caso uma dependência circular seja detectada durante a implantação, o sistema bloqueia a ação e retorna um erro.
Tipos de dependência
O DataWorks oferece duas categorias principais de dependências de agendamento: dependências de mesmo ciclo e dependências entre ciclos, aplicáveis a diferentes cenários de negócios. Por padrão, as dependências de mesmo ciclo associam-se à instância antecessora mais próxima dentro do mesmo ciclo. Ao ativar as configurações avançadas de dependência de agendamento, você pode selecionar Specified Range ou Specified Set para controlar com precisão o intervalo de instâncias antecessoras dependentes, abrangendo cenários flexíveis como dependências entre fusos horários e entre janelas de tempo.
Conceitos prévios
Um ciclo é um conceito relativo cujo significado é definido pela scheduling time de um nó. O ciclo de agendamento refere-se ao deslocamento temporal entre duas instâncias de agendamento adjacentes de um nó, determinado pela sua frequência de agendamento. Por exemplo, para uma tarefa de agendamento diário, o ciclo anterior corresponde à instância do dia anterior; para uma tarefa de agendamento horário, corresponde à instância da hora anterior.
|
Frequência de agendamento |
Um ciclo |
|
Agendamento diário, semanal, mensal e anual |
1 dia Nota
Para tarefas de agendamento semanal, mensal e anual, as instâncias ainda são geradas diariamente (instâncias em dias sem agendamento são instâncias de simulação). Portanto, o cálculo de dependência baseia-se na granularidade de dia, e a instância do ciclo anterior pode estar em status de simulação. |
|
Agendamento horário |
Um intervalo no nível de hora |
|
Agendamento por minuto |
Um intervalo no nível de minuto (por exemplo, a cada 5 minutos) |
Tipos de dependência
O DataWorks fornece os seguintes tipos de dependência com base na forma como são vinculadas:
Dependência mais próxima (dependência de mesmo ciclo): A instância sucessora vincula-se à instância antecessora mais próxima no mesmo ciclo, seguindo o princípio de proximidade.
Intervalo especificado: Defina um intervalo contínuo usando deslocamentos inicial e final para controlar precisamente o alcance das instâncias antecessoras dependentes. Ideal para cenários como dependências de dados entre fusos horários.
Conjunto especificado: Selecione múltiplas instâncias antecessoras discretas. Adequado para casos em que o nó sucessor depende de várias instâncias de ciclo antecessoras específicas.
Dependência entre ciclos: Especifique rapidamente o resultado da instância do ciclo anterior de um determinado nó. O nó especificado pode ser o próprio nó atual (autodependência), um nó filho de primeiro nível do sucessor ou qualquer outro nó.
Specified range e Specified set ficam disponíveis apenas após ativar a opção Enable advanced scheduling dependency configuration (desativada por padrão) nas configurações de agendamento do DataStudio. O limite superior do intervalo abrange o dia anterior e o dia atual: para tarefas no nível de minuto, o deslocamento máximo é de ±1440 minutos; para tarefas horárias, o deslocamento máximo é de ±24 horas; para tarefas diárias e de frequência superior, o intervalo máximo vai das 00:00 do dia anterior até as 23:59 do dia atual.
Comparação dos quatro tipos de dependência
Exemplo: Um nó A de agendamento diário produz a tabela dim_user, e o nó sucessor B consome essa tabela:
Dependência mais próxima (dependência de mesmo ciclo): A tarefa diária sucessora depende dos dados produzidos pela tarefa diária antecessora no mesmo dia. Por exemplo, o relatório de vendas de hoje (nó B) precisa aguardar o cálculo do total de vendas de hoje (nó A).
Intervalo especificado: A tarefa sucessora depende de todas as instâncias antecessoras dentro de uma janela de tempo específica. Por exemplo, a tarefa diária na região china (nó B) depende de todas as 24 instâncias da tarefa horária na região Índia (nó A) dentro da janela de horas
[-3, 21].Conjunto especificado: A tarefa sucessora depende apenas de instâncias antecessoras em pontos específicos no tempo. Por exemplo, uma tarefa de resumo (nó B) precisa aguardar apenas a conclusão das instâncias geradas às
0:00,6:00,12:00e18:00pela tarefa de coleta de dados antecessora (nó A).Dependência entre ciclos (depende do ciclo anterior): A tarefa sucessora depende dos dados completos produzidos pela tarefa antecessora no ciclo anterior ou alcança execução serial por meio de autodependência. Por exemplo, um relatório T+1 (nó B) depende dos dados produzidos pelo nó A ontem, ou uma tarefa horária depende de sua própria instância da hora anterior para evitar concorrência.
|
Item de comparação |
Dependência de mesmo ciclo |
Dependência entre ciclos (depende do ciclo anterior) |
||
|
Dependência mais próxima (dependência de mesmo ciclo) |
Specified range |
Specified set |
||
|
Descrição |
A instância atual deste nó depende do resultado da execução da instância do nó antecessor no mesmo ciclo. A instância antecessora mais próxima é vinculada com base no princípio de proximidade. |
Utiliza deslocamentos inicial/final para especificar um intervalo contínuo, permitindo controle preciso sobre o alcance das instâncias antecessoras das quais se depende. |
Seleciona múltiplas instâncias antecessoras discretas especificando-as individualmente. |
A instância atual deste nó depende do resultado da execução da instância de um nó especificado do ciclo anterior. O nó especificado pode ser o próprio nó (autodependência), um nó filho de primeiro nível do sucessor ou qualquer outro nó. |
|
Representação no DAG |
Exibida como uma linha sólida. |
Exibida como uma linha sólida. |
Exibida como uma linha sólida. |
Exibida como uma linha tracejada. |
|
Cenário típico |
O nó B precisa ler dados produzidos pelo nó A hoje. |
Dependência de dados entre fusos horários (por exemplo, uma tarefa diária na china depende de um intervalo contínuo de instâncias de tarefas horárias na Índia ou na Arábia Saudita). |
Depende apenas de algumas instâncias de ciclo antecessoras (por exemplo, apenas os horários 0:00, 6:00, 12:00 e 18:00). |
Um nó depende de dados produzidos ontem (por exemplo, recuperação de dados T-1). Tarefas horárias ou no nível de minuto alcançam execução serial por meio de autodependência para evitar execução simultânea de múltiplas instâncias de ciclo. |
|
Método de configuração |
Suporta análise automática, desenho de linhas de fluxo de trabalho e adição manual. |
Configure deslocamentos inicial/final. |
Selecione o conjunto discreto desejado entre as instâncias da tarefa antecessora. |
Na seção "Previous Cycle" do painel de configuração de agendamento, selecione o tipo de dependência e especifique o ID do nó. |
|
Configuração avançada necessária |
Não |
Sim |
Sim |
Não |
Observação: Dependências de mesmo ciclo e dependências entre ciclos podem coexistir entre o mesmo par de nós, mas seus respectivos propósitos de negócio devem estar claramente definidos. Se você precisar apenas de uma dependência entre ciclos, lembre-se de excluir a dependência de mesmo ciclo gerada automaticamente pelo sistema. Caso contrário, a instância sucessora ainda precisará aguardar a conclusão da instância antecessora no ciclo atual antes de poder ser executada, resultando em atrasos inesperados.
Guia de configuração de dependências de agendamento
Para garantir a integridade e a manutenibilidade da cadeia de agendamento, todos os nós devem ter dependências antecessoras configuradas antes de serem implantados no Operation Center para agendamento automático. Se um nó não tiver dependência de dados, ele deverá depender de um nó virtual ou do nó raiz. Ao configurar dependências de agendamento, analise a lógica de negócios do nó, identifique os alvos e tipos de dependência e selecione o método de configuração mais adequado para construir um fluxo de trabalho de dados robusto e bem estruturado.
1. Identificar alvos de dependência
Antes de configurar as dependências, conclua as seguintes preparações:
Analise a linhagem: Confirme se as tabelas ou partições produzidas pelo antecessor correspondem às tabelas ou partições lidas pelo sucessor.
Verifique as propriedades de agendamento: Certifique-se de que o ciclo de agendamento, horário de vigência, parâmetros de agendamento e outras propriedades do nó estejam configurados corretamente, pois essas propriedades afetam diretamente o comportamento de vinculação da dependência.
Selecione os objetos de dependência com base na forma como o nó atual depende dos dados.
|
Cenário 1: Depender da saída direta de um nó antecessor |
|
|
Cenário 2: Depender de dados antecessores não agendados (orientado por disponibilidade de dados) |
|
|
Cenário 3: Sem dependência direta de dados, mas com associação de lógica de negócios |
|
2. Selecionar um tipo de dependência
Se o nó atual depende da saída direta de um nó antecessor (Cenário 1), confirme adicionalmente se os dados dependentes são a saída do nó antecessor do mesmo ciclo de agendamento ou de um ciclo diferente.
Critérios principais de decisão
Determine de qual ciclo o nó sucessor realmente lê os dados de saída do nó antecessor. Na maioria dos cenários, um nó grava dados periodicamente em uma partição específica de uma tabela usando parâmetros de agendamento para resolução dinâmica. Consulte Scheduling parameter sources and expressions para entender como os parâmetros de agendamento são substituídos. Se precisar depender de um nó no mesmo workspace, verifique a configuração de parâmetros de agendamento desse nó.
Como confirmar
-
Nós no 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 é a partição "de hoje" ou "de ontem".
No ambiente de desenvolvimento, verifique a configuração de parâmetros de agendamento e os detalhes do código do nó antecessor. No ambiente de produção, verifique os resultados da substituição de parâmetros nos detalhes da instância.
-
Nós em um workspace diferente: Use o Data Map para visualizar as informações de partição e o histórico de alterações da tabela antecessora.
Confirme os valores de partição que são realmente gravados a cada dia.
Selecionar um tipo
O código sucessor lê a partição do dia atual ou do ciclo atual do nó antecessor: Dependência de mesmo ciclo.
O código sucessor lê a partição do dia anterior ou do ciclo anterior do nó antecessor: Dependência entre ciclos.
Tarefas horárias ou por minuto que devem ser executadas estritamente na ordem agendada das instâncias: Dependência entre ciclos, significando dependência do próprio nó atual.
O nó sucessor agrega dados antecessores entre fusos horários por data de negócios (por exemplo, uma tarefa diária na china agrega tarefas horárias locais de regiões como Índia e Arábia Saudita): Ative a configuração avançada e use um intervalo especificado para cobrir as instâncias do dia de negócios local correspondente.
A janela de tempo da dependência sucessora cruza o limite de um dia natural (por exemplo, uma tarefa em lote de madrugada processa dados apenas da tarde anterior até a madrugada do dia atual): Ative a configuração avançada e use um intervalo especificado para definir a janela contínua entre dias.
O nó sucessor precisa depender apenas das instâncias de ciclo mais recentes do nó antecessor, em vez de aguardar todas as instâncias antecessoras do dia atual por padrão: Ative a configuração avançada e use um intervalo especificado para limitar o escopo da dependência.
O nó sucessor depende apenas de alguns pontos discretos no tempo do nó antecessor (por exemplo, 0:00, 6:00, 12:00 e 18:00): Ative a configuração avançada e use um conjunto especificado para selecionar as instâncias correspondentes.
Consequências de falhar na confirmação correta da linhagem:
Risco de dependência ausente: Se existir uma linhagem de tabela, mas nenhuma dependência de agendamento for configurada, a tarefa sucessora iniciará antes do êxito da instância antecessora, resultando em nenhum dado lido ou dados incompletos.
Risco de incompatibilidade de parâmetros: Se uma dependência for configurada, mas os parâmetros de partição estiverem desalinhados (por exemplo, o nó antecessor produz a partição de hoje, mas o nó sucessor lê a partição de ontem), ocorrerão erros de lógica de dados e anomalias de qualidade.
3. Configurar dependências
Com base nos objetos e tipos de dependência confirmados nas etapas 1 e 2, selecione um método apropriado para configurar as dependências.
O DataWorks permite que tarefas com diferentes frequências de agendamento dependam umas das outras. Combinando dependências de mesmo ciclo/entre ciclos com parâmetros de agendamento, é possível implementar uma ampla variedade de cenários. Para mais informações, consulte:
Para controlar com precisão o intervalo de instâncias antecessoras para dependências (como especificar um intervalo contínuo de deslocamento ou selecionar instâncias discretas), ative a opção "Enable advanced scheduling dependency configuration" em DataStudio > Scheduling Settings e configure as dependências usando o método Specified range ou Specified set.
4. Verificar dependências de agendamento
Após concluir a configuração e antes de implantar o nó, realize as seguintes verificações:
|
Método de verificação |
Descrição |
|
Ao enviar um nó, use este método para verificar se as alterações de dependência da versão atual do nó estão conforme o esperado e avaliar o impacto das mudanças no ambiente de produção. Quando a análise automática está ativada, para garantir a geração normal de dados no ambiente de produção, confirme as alterações de agendamento do nó ao enviá-lo. Utilize este recurso para assegurar que as mudanças de dependência não afetem a geração de dados pelas tarefas de produção. |
|
|
Após a implantação de um nó, use este método para verificar se as dependências da tarefa de agendamento de produção no Operation Center estão conforme o esperado.
|
Impacto da remoção de dependências nas tarefas sucessoras
Durante a operação e manutenção ou iteração de tarefas, pode ser necessário remover ou ajustar dependências de agendamento existentes.
Antes de remover uma dependência, avalie o impacto no comportamento de agendamento das tarefas sucessoras para evitar tarefas órfãs ou incidentes de dados. Para mais informações sobre nós órfãos, consulte Orphaned nodes.
|
Cenário de dependência sucessora |
Impacto após a remoção da dependência |
Nível de risco |
|
A tarefa sucessora depende apenas do nó atual. |
A tarefa sucessora torna-se um nó órfão, perde o mecanismo de acionamento antecessor e deixa de ser agendada automaticamente. |
Alto |
|
A tarefa sucessora depende de múltiplos nós pais. |
A tarefa sucessora pode iniciar antes que os dados antecessores estejam prontos, causando falta de dados ou erros de cálculo. |
Médio |
|
A tarefa sucessora depende de instâncias entre ciclos. |
Se a dependência entre ciclos for removida, a tarefa sucessora poderá ler dados de uma data de negócios incorreta, causando erros de lógica de dados. |
Médio |
Casos de uso
Construção em camadas de data warehouse offline: Configure dependências de link completo em ODS → DWD → DWS → ADS para garantir que os dados em camadas sejam gerados em ordem.
Pipeline ETL padrão: Configure dependências de mesmo ciclo para garantir que as tarefas sucessoras sejam executadas estritamente após o êxito das instâncias antecessoras, 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 de negócios completos do dia anterior, permitindo análises e saídas de dados precisas para o dia seguinte.
Agregação mista de múltiplos ciclos: Configure dependências entre ciclos para que uma tarefa diária dependa de todas as instâncias de ciclo de uma tarefa horária, garantindo que os dados subjacentes estejam totalmente prontos antes da agregação.
Acionamento por 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, habilitando a 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 da cadeia de dependências e melhorando a visibilidade do monitoramento.
Agregação de dados multirregião entre fusos horários: Um data warehouse na china processa dados de regiões ao redor do mundo. Ao especificar um intervalo para vincular instâncias horárias antecessoras correspondentes ao dia de negócios local de cada região, cobrem-se os deslocamentos entre fusos horários (por exemplo, Índia [-3, 21], Arábia Saudita [-5, 19]).
Agregação de janela entre dias: Uma tarefa sucessora agrega dados dentro de uma janela de tempo que não corresponde a um dia civil. Ao especificar um intervalo, selecione flexivelmente uma janela contínua entre o dia anterior e o dia atual (por exemplo, [-12, 4] cobre das 12:00 do dia anterior até as 04:00 do dia atual).
Depender apenas da janela antecessora mais recente: Uma tarefa sucessora precisa apenas das instâncias mais recentes da tarefa antecessora (por exemplo, as últimas 6 horas). Ao especificar um intervalo, limite o escopo de vinculação e evite aguardar todas as instâncias antecessoras do dia atual por padrão.
Depender de pontos discretos no tempo do antecessor: Uma tarefa sucessora precisa apenas da saída da tarefa antecessora em horários específicos (por exemplo, 00:00, 06:00, 12:00 e 18:00). Especifique um conjunto para selecionar as instâncias correspondentes.
Perguntas frequentes
A seção a seguir descreve cenários típicos. Para mais perguntas frequentes sobre dependências de agendamento, consulte FAQ about dependencies.
-
Unicidade do nó.
Um nó possui formas diferentes nos ambientes de desenvolvimento e produção, mas permanece único: As configurações de dependência de agendamento do mesmo nó podem diferir entre os ambientes de desenvolvimento e produção. Isso significa que o mesmo nó pode ter duas formas diferentes nesses ambientes, mas o nó em si é único.
Remova as dependências sucessoras tanto no ambiente de desenvolvimento quanto no de produção antes de desativar um nó: Devido à unicidade do nó, para garantir que as tarefas sucessoras possam recuperar dados e executar corretamente, o DataWorks exige que você primeiro remova a dependência na configuração de agendamento do nó sucessor, reconfigure os nós antecessores dos quais o nó sucessor precisa depender e envie e implante as alterações. Desative a tarefa antecessora somente após a remoção da dependência em ambos os ambientes.
-
Método de geração de instâncias.
Ao criar um nó, certifique-se de que os nós antecessores e sucessores usem o mesmo método de geração de instâncias. Se as configurações de instance generation method: Immediately after deployment diferirem, o nó antecessor poderá gerar instâncias no dia atual enquanto o nó sucessor gera instâncias no dia seguinte, fazendo com que as instâncias sucessoras se tornem Scenario: Isolated nodes.
Se alterar o ciclo de agendamento de um nó existente e selecionar a opção para gerar instâncias imediatamente após a implantação, as instâncias geradas anteriormente não serão excluídas automaticamente ao modificar as dependências de agendamento. As dependências das instâncias de ciclo geradas no dia da implantação podem ficar inconsistentes. Para mais informações, consulte Instance generation method: Immediately after deployment.
-
Ocorre um erro indicando que o número de dependências antecessoras excede 200 ao usar a OpenAPI para atualizar uma tarefa.
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 os nós antecessores e sucessores no DataStudio para reduzir o número de dependências antecessoras diretas do nó atual. Para mais informações sobre a configuração de nós virtuais, consulte Zero load node.