O nó de ramificação determina quais nós a jusante executam e quais são ignorados com base na saída do nó a montante. Cenários típicos incluem selecionar estratégias de processamento distintas conforme o volume de dados ou executar fluxos de trabalho diferentes com base em códigos de status de negócios.
Visão geral
Esse nó utiliza operadores de comparação do Python para avaliar os parâmetros de saída do nó a montante e encaminha o resultado para ramificações distintas. Cada ramificação pode ser vinculada a nós a jusante específicos. Quando a condição de uma ramificação é atendida, os nós correspondentes executam normalmente. Caso contrário, eles entram no estado de dry run.
Cenário típico
Imagine uma tarefa de sincronização diária de dados na qual você precise escolher estratégias de processamento distintas para os nós a jusante, dependendo da quantidade de linhas da tabela de origem:
Etapa 1: O nó de atribuição Data profiling consulta a quantidade de linhas da tabela de origem e atribui o valor ao parâmetro de saída
row_count.-
Etapa 2: O nó de ramificação recebe o parâmetro
row_counte configura duas condições:Ramificação 1:
${row_count} > 10000(mais de 10.000 linhas)Ramificação 2:
${row_count} <= 10000(10.000 linhas ou menos)
Etapa 3: Vincule a Ramificação 1 a um nó Batch synchronization a jusante (processa grandes volumes em lotes) e a Ramificação 2 a um nó Full synchronization a jusante (sincroniza volumes pequenos em uma única passagem). Durante a execução, apenas os nós da ramificação cuja condição é atendida executam.
O fluxo geral é o seguinte:
Data profiling (outputs row_count) → Branch node (evaluates row_count) → Downstream nodes whose conditions are met run
As seções a seguir utilizam esse cenário para demonstrar como criar e configurar um nó de ramificação.
Mecanismo de dry run: em um nó de ramificação, se a condição não for atendida durante a execução, os nós a jusante correspondentes entram no estado de dry run e o log registra uma mensagem semelhante a It's set condition-skip by task. Como a propriedade de dry run se propaga para os nós a jusante, evite posicionar tarefas com dependência de si mesmas em um caminho de ramificação. Para saber se o nó herda a propriedade de dry run do nó a montante, consulte Inherit the dry run property from upstream nodes.
Pré-requisitos
Utilize o DataWorks Standard Edition ou superior para acessar o recurso de nós de ramificação. Consulte DataWorks edition comparison para obter mais informações.
Em geral, emprega-se um nó de atribuição junto com o nó de ramificação. O nó de atribuição a montante envia os parâmetros necessários para a avaliação (como quantidade de linhas de dados ou um código de status) ao nó de ramificação, que então verifica a condição com base no valor recebido. Veja Assignment node para mais detalhes.
Precauções
Quantidade máxima de ramificações: cada nó de ramificação suporta até 50 ramificações.
Cuidado com strings vazias: as condições de ramificação não aceitam avaliação baseada em string vazia (
''). Por exemplo, se a condição for'${tp_code}' != ''e o valor do parâmetro for um espaço, o sistema considera que há um valor (pois o espaço não é uma string vazia) e mantém a ramificação selecionada. Use um marcador especial em vez de um valor vazio. Defina o valor padrão comotp_code='NONE'e ajuste a condição para'${tp_code}' != 'NONE'.Múltiplas correspondências: caso várias condições sejam atendidas simultaneamente, os nós a jusante de todas as ramificações correspondentes executam. Assegure que as condições sejam mutuamente exclusivas ou defina claramente a lógica para quando várias condições forem atendidas ao mesmo tempo.
Procedimento
-
Acesse o DataWorks console. Na região de destino, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Development.
-
Posicione o cursor sobre o ícone
e selecione .Como alternativa, abra o fluxo de trabalho desejado, clique com o botão direito em uma área vazia e selecione .
Na caixa de diálogo Create Node, insira o nome do nó e escolha um caminho.
Clique em Commit.
-
Defina a lógica de ramificação.
Na página Definition, clique em Add Branch.
-
Na caixa de diálogo Branch Definition, configure os parâmetros.
Parâmetro
Descrição
Condition
A condição que define se esta ramificação executará. Observe as seguintes regras:
-
Utilize apenas operadores de comparação do Python para definir a lógica.
-
Se a expressão retornar true durante a execução, a condição da ramificação é atendida.
-
Caso ocorra um erro na análise da expressão em tempo de execução, o nó de ramificação inteiro falha.
-
Utilize variáveis globais e parâmetros definidos no contexto do nó nas condições. Por exemplo, ${input} pode representar um parâmetro de entrada configurado no nó de ramificação.
Associated Node Output
Saída que os nós a jusante usam para estabelecer dependências:
-
Os nós a jusante usam essa saída para declarar dependências.
-
Quando a condição é atendida, os nós a jusante que dependem dessa saída executam, desde que as demais dependências a montante também sejam satisfeitas.
-
Se a condição não for atendida, os nós dependentes não executam. O DataWorks os marca como
Not run because the branch condition is not met.
Description
Informe uma descrição resumida. Por exemplo, defina duas ramificações com as condições ${input}==1 e ${input}>2.
Exemplo de configuração do parâmetro Associated Node Output (com base no cenário apresentado):
O nó de ramificação possui dois nós a jusante: Batch synchronization e Full synchronization. Vincule a Ramificação 1 (condição:
${row_count} > 10000) à saída do nódata_sync.branch_large, e a Ramificação 2 (condição:${row_count} <= 10000) à saídadata_sync.branch_small. O nó a jusante Batch synchronization depende dedata_sync.branch_large, enquanto o Full synchronization depende dedata_sync.branch_small. Durante a execução, apenas os nós da ramificação cuja condição é atendida executam. -
-
Clique em OK.
Após adicionar uma ramificação, use Modify ou Delete para gerenciar a ramificação.
Para modificar as configurações, clique em Modify. O DataWorks atualiza as dependências relacionadas automaticamente.
Para excluir a ramificação, clique em Delete. O DataWorks também ajusta as dependências correspondentes.
-
No painel à direita, clique em Scheduling Settings para definir as propriedades de agendamento do nó.
Após configurar as condições, o DataWorks adiciona automaticamente os nomes de saída na seção Output Name of Current Node da aba . Os nós a jusante usam esses nomes para declarar dependências.
NotaSe você criar uma dependência desenhando uma linha para configurar o contexto do nó e o nome da saída não aparecer nas configurações de agendamento, insira o nome manualmente.
-
Envie e implante o nó.
Clique no ícone
da barra de ferramentas para salvar o nó.Clique no ícone
da barra de ferramentas para enviar o nó.Na caixa de diálogo Submission, insira uma Change Description.
Clique em OK.
Se usar um workspace no modo padrão, implante a tarefa no ambiente de produção após o envio. Clique em Deploy Task no canto superior esquerdo da barra de menus. Consulte Deploy tasks para obter mais detalhes.
-
Visualize as tarefas agendadas.
No canto superior direito do editor, clique em O&M Personnel para abrir o Operation Center do ambiente de produção.
Visualize a execução das tarefas agendadas. Para mais informações, consulte Manage scheduled tasks.
Para visualizar mais detalhes, acesse Operation Center na barra de menus superior. Veja Operation Center overview para obter orientações.
Exemplo: selecionar estratégia de sincronização com base no volume de dados
O exemplo a seguir demonstra como montar um fluxo completo: o nó Data profiling a montante conta as linhas da tabela de origem → o nó de ramificação escolhe a estratégia de acordo com a contagem → o nó a jusante executa a tarefa correspondente.
Etapa 1: preparar o nó de atribuição a montante
Crie um nó de atribuição Data profiling para consultar a quantidade de linhas da tabela de origem e atribuir o valor ao parâmetro de saída row_count. O nome da saída do nó de atribuição é data_sync.probe_output e o valor corresponde à contagem de linhas (por exemplo, 15000).
Etapa 2: configurar o nó de ramificação
Crie o nó de ramificação e vincule a saída data_sync.probe_output do nó Data profiling a montante ao parâmetro de entrada row_count do nó de ramificação. Em seguida, configure duas ramificações:
Ramificação 1: a condição é
${row_count} > 10000, associada à saídadata_sync.branch_large, com a descrição "Sincronização em lotes para grandes volumes".Ramificação 2: a condição é
${row_count} <= 10000, associada à saídadata_sync.branch_small, com a descrição "Sincronização completa para volumes pequenos".
Etapa 3: configurar os nós a jusante
Crie dois nós a jusante, configurando cada um para depender de uma saída distinta do nó de ramificação:
Nó Batch synchronization: no painel Scheduling Dependency, defina o Output Name of Parent Node do nó a montante como
data_sync.branch_large. Essa tarefa executa apenas quando o volume ultrapassa 10.000 linhas.Nó Full synchronization: defina o Output Name of Parent Node do nó a montante como
data_sync.branch_small. Essa tarefa executa somente quando o volume é de 10.000 linhas ou menos.
Etapa 4: visualizar os resultados da execução
Após enviar e implantar a tarefa, acesse o Operation Center para verificar os resultados. Considere que a tabela de origem possui 15.000 linhas neste ciclo (a condição da Ramificação 1 é atendida):
Ramificação com condição atendida: Ramificação 1 (
15000 > 10000retorna true) → o nó Batch synchronization executa normalmente. Consulte o Operational Logs para analisar o registro de execução e os resultados.Ramificação com condição não atendida: Ramificação 2 (
15000 <= 10000retorna false) → o nó Full synchronization é ignorado. O log de execução exibe um aviso em amarelo:It's set condition-skip by task, indicando que a condição da ramificação pulou a execução, com duração total de 0s.
Esse fluxo automatiza a escolha da estratégia de processamento mais adequada ao estado real dos dados a montante, evitando execuções em lote ou completas desnecessárias.
Apêndice: operadores de comparação do Python suportados
Os exemplos a seguir consideram que a variável a vale 10 e a variável b vale 20.
|
Operador |
Descrição |
Exemplo |
|
== |
Igual a: verifica se dois objetos são iguais. |
(a == b) retorna false. |
|
!= |
Diferente de: verifica se dois objetos não são iguais. |
(a != b) retorna true. |
|
<> |
Diferente de: verifica se dois objetos não são iguais. |
(a <> b) retorna true. Funciona de modo semelhante ao operador !=. |
|
> |
Maior que: verifica se x é maior que y. |
(a > b) retorna false. |
|
< |
Menor que: verifica se x é menor que y. |
(a < b) retorna true. |
|
>= |
Maior ou igual a: verifica se x é maior ou igual a y. |
(a >= b) retorna false. |
|
<= |
Menor ou igual a: verifica se x é menor ou igual a y. |
(a <= b) retorna true. |