executar tarefa condicionalmente em um Databricks Job
Em default, um Job executa a tarefa quando suas dependências são executadas e todas são bem-sucedidas, mas o senhor também pode configurar a tarefa em um Job Databricks para executar somente quando condições específicas forem atendidas. Databricks O Jobs suporta os seguintes métodos para executar tarefas condicionalmente:
O senhor pode especificar a execução se as dependências executarem uma tarefa com base no status de execução das dependências da tarefa. Por exemplo, o senhor pode usar
Run if
para executar uma tarefa mesmo quando algumas ou todas as suas dependências falharem, permitindo que o trabalho se recupere das falhas e continue em execução.A tarefa de condição If/else é usada para executar uma parte de um Job DAG com base nos resultados de uma expressão booleana. A tarefa
If/else condition
permite que o senhor adicione lógica de ramificação ao seu trabalho. Por exemplo, a execução transformações tarefa somente se a tarefa de ingestão upstream adicionar novos dados. Caso contrário, o senhor executa a tarefa de processamento de dados.
Adicionar a condição Run if
de uma tarefa
O senhor pode configurar uma condição Run if
ao editar uma tarefa com uma ou mais dependências. Para adicionar a condição à tarefa, selecione a condição no menu suspenso execução se dependências na configuração da tarefa. A condição Run if
é avaliada após a conclusão de todas as dependências da tarefa. O senhor também pode adicionar uma condição Run if
ao adicionar uma nova tarefa com uma ou mais dependências.
Run if
opções de condições
O senhor pode adicionar as seguintes condições Run if
a uma tarefa:
Todos foram bem-sucedidos: Todas as dependências foram executadas e bem-sucedidas. Essa é a default condição para executar a tarefa. A tarefa é marcada como
Upstream failed
se a condição não for atendida.Pelo menos um foi bem-sucedido: Pelo menos uma dependência foi bem-sucedida. A tarefa é marcada como
Upstream failed
se a condição não for atendida.Nenhum falhou: Nenhuma das dependências falhou e pelo menos uma dependência foi executada. A tarefa é marcada como
Upstream failed
se a condição não for atendida.Tudo pronto: A tarefa é executada após a execução de todas as suas dependências, independentemente do status da execução dependente. Essa condição permite que o senhor defina uma tarefa que seja executada sem depender do resultado de sua tarefa dependente.
Pelo menos um falhou: Pelo menos uma dependência falhou. A tarefa é marcada como
Excluded
se a condição não for atendida.Todos falharam: Todas as dependências falharam. A tarefa é marcada como
Excluded
se a condição não for atendida.
Observação
As tarefas configuradas para lidar com falhas são marcadas como
Excluded
se sua condiçãoRun if
não for atendida. As tarefas excluídas são ignoradas e tratadas como bem-sucedidas.Se todas as dependências da tarefa forem excluídas, a tarefa também será excluída, independentemente de sua condição
Run if
.Se o senhor cancelar a execução de uma tarefa, o cancelamento se propagará pela tarefa downstream e a tarefa com uma condição
Run if
que lida com falhas será executada, por exemplo, para verificar a execução de uma tarefa de limpeza quando a execução de uma tarefa for cancelada.
Como o site Databricks Jobs determina o status de execução do trabalho?
Databricks O Jobs determina se a execução de um Job foi bem-sucedida com base no resultado da tarefa leaf do Job. Uma tarefa folha é uma tarefa que não tem dependências downstream. A execução de um trabalho pode ter um dos três resultados:
Foi bem-sucedido: Todas as tarefas foram bem-sucedidas.
Foi bem-sucedido com falhas: Algumas tarefas falharam, mas todas as tarefas de folhas foram bem-sucedidas.
Failed (Falha): Uma ou mais tarefas de folha falharam.
Adicione lógica de ramificação ao seu trabalho com a tarefa If/else condition
Use a tarefa If/else condition
para executar uma parte de um Job DAG com base em uma expressão booleana. A expressão consiste em um operador booleano e um par de operandos, em que os operandos podem fazer referência ao estado do trabalho ou da tarefa usando variáveis de parâmetro do trabalho e da tarefa ou usar valores da tarefa.
Observação
Os valores numéricos e não numéricos são tratados de forma diferente, dependendo do operador booleano:
Os operadores
==
e!=
realizam a comparação de strings de seus operandos. Por exemplo,12.0 == 12
é avaliado como falso.Os operadores
>
,>=
e<=
realizam comparações numéricas de seus operandos. Por exemplo,12.0 >= 12
é avaliado como verdadeiro e10.0 >= 12
é avaliado como falso.Somente valores numéricos, cadeias de caracteres e booleanos são permitidos ao fazer referência a valores de tarefa em um operando. Qualquer outro tipo fará com que a expressão de condição falhe. Os tipos de valores não numéricos são serializados em strings e são tratados como strings em expressões
If/else condition
. Por exemplo, se um valor de tarefa for definido como um valor booleano, ele será serializado como"true"
ou"false"
.
O senhor pode adicionar uma tarefa If/else condition
ao criar um trabalho ou editar uma tarefa em um trabalho existente. Para configurar uma tarefa If/else condition
:
No menu suspenso Type (Tipo ), selecione
If/else condition
.Na primeira caixa de texto Condition (Condição ), digite o operando a ser avaliado. O operando pode fazer referência a uma variável de parâmetro de trabalho ou tarefa ou a um valor de tarefa.
Selecione um operador booleano no menu suspenso.
Na segunda caixa de texto Condição, digite o valor para avaliar a condição.
Para configurar dependências em uma tarefa If/else condition
:
Selecione a tarefa
If/else condition
no DAG view e clique em + Add tarefa (Adicionar tarefa).Depois de inserir os detalhes da tarefa, clique em Depende de e selecione
<task-name> (true)
onde<task-name>
é o nome da tarefaIf/else condition
.Repita o procedimento para a condição que avalia
false
.
Por exemplo, suponha que o senhor tenha uma tarefa chamada process_records
que mantém uma contagem de registros que não são válidos em um valor chamado bad_records
e deseja ramificar o processamento com base na localização de registros que não são válidos. Para adicionar essa lógica ao seu fluxo de trabalho, o senhor pode criar uma tarefa If/else condition
com uma expressão como {{tasks.process_records.values.bad_records}} > 0
. Em seguida, o senhor pode adicionar tarefas dependentes com base nos resultados da condição.
Depois que a execução de um trabalho contendo uma tarefa If/else condition
for concluída, o senhor poderá view o resultado da expressão e os detalhes da avaliação da expressão quando acessar view os detalhes da execução do trabalho na interface do usuário.