Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use uma condição SQL para verificar os seus dados antes de começar uma execução de tarefa acionada. Quando o gatilho dispara, o Azure Databricks executa uma consulta SQL guardada num SQL warehouse que escolher. A execução só começa se o resultado da consulta cumprir a condição. Por exemplo, execute um trabalho apenas quando uma tabela a montante terminou de carregar ou quando uma verificação de qualidade dos dados é aprovada, sem adicionar uma tarefa de verificação separada ao trabalho.
Important
Este recurso está em versão Beta. Para o utilizar, um administrador de espaço de trabalho deve ativar as condições SQL para os acionadores a partir da página de Pré-visualizações. Ver Gerir as pré-visualizações de Azure Databricks.
Requirements
- Tens de ter o CAN MANAGE na tarefa para configurar os seus triggers.
- Precisas de uma consulta guardada que não use parâmetros de consulta. Deve ter acesso à consulta e ser capaz de a executar no armazém SQL que selecionar.
- A identidade de execução do trabalho deve ser capaz de abrir a consulta guardada, ter CAN USE no SQL warehouse e ter acesso de leitura a todas as tabelas que a consulta lê. A consulta de condição executa-se como esta identidade.
Como funcionam as condições SQL
O acionador decide quando verificar. A condição SQL decide se deve iniciar uma execução. Depois do disparo do trigger, o Azure Databricks executa a consulta em modo apenas de leitura. Uma execução só começa quando tanto o gatilho como a condição SQL se verificarem.
Pode adicionar uma condição SQL a um gatilho de agendamento, atualização de tabela, chegada de ficheiro, atualização de modelo ou conclusão de tarefa. Os gatilhos contínuos não suportam condições SQL.
Escolha como o Azure Databricks avalia o resultado da consulta:
| Tipo de condição | Valor da API | Começa uma execução quando | Requisitos de consulta |
|---|---|---|---|
| A consulta devolve linhas | QUERY_RETURNS_ROWS |
O resultado contém pelo menos uma linha. | None. Zero linhas significam que a condição não é cumprida. |
| Alterações no valor do resultado | RESULT_VALUE_CHANGES |
O resultado difere do valor na verificação anterior. | Deve devolver exatamente uma linha e uma coluna. O valor deve ser 1 MiB ou menor. |
Para alterações no valor do resultado, o Azure Databricks executa a consulta em segundo plano logo após guardar o acionador e armazena o resultado como linha de base. Esta verificação não inicia uma execução. Verificações posteriores iniciam uma execução quando o resultado difere do valor armazenado. Alterar a consulta, SQL warehouse ou tipo de condição no trigger reinicia a linha de base, e o Azure Databricks armazena uma nova da mesma forma. Pausar o acionador ou alterar outras definições do acionador também pode reiniciá-lo. Editar o texto da consulta guardada não a reinicia.
Cada verificação funciona da seguinte forma:
- Uma verificação, incluindo o arranque do SQL Warehouse, expira ao fim de 5 minutos. Se uma verificação expirar, nenhuma execução começa e o acionador verifica novamente na avaliação seguinte.
- Um gatilho executa no máximo um teste de cada vez. Se o gatilho estiver agendado para ocorrer enquanto a verificação ainda está a decorrer, o Azure Databricks ignora essa avaliação em vez de a colocar na fila.
- Se a consulta tiver mais do que uma instrução, apenas o resultado da última instrução é utilizado.
- As condições SQL aplicam-se apenas a execuções que o acionador inicia. Executar agora e outras execuções manuais não verificam a condição SQL.
Gorjeta
A consulta devolve linhas, certifique-se de que a consulta devolve zero linhas quando os dados não estiverem prontos. Uma consulta como SELECT count(*) > 100 FROM main.sales.orders devolve uma linha mesmo quando a contagem é 100 ou menos, por isso a condição é cumprida. Filtrar com WHERE ou HAVING em vez disso:
SELECT 1
FROM main.sales.orders
WHERE order_date = current_date()
HAVING count(*) > 100
Adicionar uma condição SQL a um trigger
- Na barra lateral do espaço de trabalho, clica em Jobs & Pipelines e depois abre o job.
- Em Agendamentos & Acionadores, clique em Adicionar acionador ou edite um acionador existente.
- Selecione o tipo de Trigger e configure o Trigger.
- Expanda Avançado e, em seguida, clique em Adicionar condição SQL.
- Selecione a consulta SQL e o SQL warehouse.
- Em Acionar quando, selecione A consulta devolve linhas ou O valor do resultado muda.
- Clique em Salvar.
Acionador de teste verifica se o trabalho pode usar a consulta guardada. Confirma que a consulta existe, não está no lixo e não tem parâmetros, mas não executa a consulta. Para ver o resultado da consulta, execute a consulta no editor SQL.
Para remover uma condição, edite o gatilho, expanda Avançado e clique em Remover condição SQL.
Configure com a API, CLI ou bundles
Defina sql_condition com sql_query_id, warehouse_id, e trigger_mode. Para um gatilho agendado que usa uma expressão cron, defina-o em schedule. Para outros tipos de gatilho, define-o em trigger, ao lado das definições do tipo de gatilho. Com a Beta de Gatilhos Múltiplos, defina-a em cada entrada em triggers.
API REST
Guarde este pedido como update-job.json e envie-o para POST /api/2.2/jobs/update na API de Jobs. Substitui os IDs pelos IDs da tua tarefa, da consulta guardada e do SQL warehouse.
{
"job_id": 9001,
"new_settings": {
"trigger": {
"pause_status": "UNPAUSED",
"table_update": {
"table_names": ["main.sales.orders"],
"condition": "ANY_UPDATED"
},
"sql_condition": {
"sql_query_id": "fe25e731-92f2-4838-9fb2-1ca364320a3d",
"warehouse_id": "5d409943fcd32c6f",
"trigger_mode": "QUERY_RETURNS_ROWS"
}
}
}
}
CLI
Guarde o corpo do pedido a partir do separador da API REST como update-job.json, e depois execute:
databricks api post /api/2.2/jobs/update --json @update-job.json
Pacotes
Para Pacotes de Automação Declarativa, adicione as seguintes definições a um recurso de trabalho existente, juntamente com as suas tarefas:
resources:
jobs:
orders_report:
trigger:
pause_status: UNPAUSED
periodic:
interval: 1
unit: DAYS
sql_condition:
sql_query_id: fe25e731-92f2-4838-9fb2-1ca364320a3d
warehouse_id: 5d409943fcd32c6f
trigger_mode: RESULT_VALUE_CHANGES
Bundles não conseguem criar consultas guardadas. Crie primeiro a consulta no espaço de trabalho e depois faça referência ao seu ID.
A sql_condition que envia para jobs/update substitui a atual por completo, por isso inclua todos os seus campos. Se deixares de fora sql_condition, a condição atual mantém-se. Para atualizar múltiplos gatilhos, veja Adicionar múltiplos gatilhos a uma tarefa.
Monitorizar verificações de condição SQL
- Para gatilhos agendados, o estado do gatilho na página do trabalho mostra se a última verificação de condição SQL foi cumprida. Clique em Detalhes da execução da consulta para abrir a instrução no histórico da consulta.
- Para ler a verificação mais recente que correu sem erro, invoque a API Get Job com
include_trigger_state=truee leiatrigger_state.sql_condition. O campolatest_condition_evaluation_satisfiedmostra se essa verificação cumpriu a condição elatest_condition_evaluation_sql_statement_ididentifica a sua instrução no histórico da consulta. Uma verificação falhada não altera estes campos. Com Vários Triggers, leiatrigger_details[].state.sql_condition. - Para cada execução iniciada por uma condição SQL, o campo Lançado na lista de execuções e na página de detalhes da execução mostra uma etiqueta SQL . Clique nele e, em seguida, clique em Detalhes da execução da consulta para abrir a verificação dessa execução no histórico de consultas.
- Se uma verificação falhar por algum motivo que possas corrigir, o erro aparece no estado do gatilho na página da tarefa. O Azure Databricks também envia o erro para as notificações de falha do trabalho, incluindo destinatários de email e destinos de webhooks. Recebes uma notificação quando uma condição de funcionamento começa a falhar, não uma para cada verificação falhada. O erro mantém-se até à próxima verificação bem-sucedida. Consulte Adicionar notificações numa tarefa.
Cada verificação é executada como uma instrução SQL no seu SQL warehouse. Para rever as verificações ao longo do tempo, consulta a tabela do sistema de histórico de consultas do armazém de dados.
Troubleshooting
| Questão | Action |
|---|---|
| A tarefa é executada sempre que o acionador dispara | Para Query devolve linhas, altera a consulta para que devolva zero linhas quando os dados não estão prontos. |
| Alterações no valor do resultado nunca iniciam uma execução | A base é o resultado da consulta no momento em que guardaste o acionador. Uma execução só começa depois de o resultado da consulta mudar desse valor para outro. |
| A verificação expira | Torna a consulta mais rápida, ou usa um serverless SQL warehouse, que começa mais depressa. |
| Adicionar condição SQL não aparece | Expandir Avançado. Se o botão ainda estiver em falta, pede a um administrador do espaço de trabalho para ativar as condições SQL para os gatilhos. |
Limitations
- Cada gatilho suporta uma condição SQL.
- Os gatilhos contínuos não suportam condições SQL.
- As consultas condicionais são executadas apenas em warehouses SQL, em modo apenas de leitura.
- Uma verificação, incluindo o arranque do SQL Warehouse, atinge o tempo limite após 5 minutos.
- Um gatilho mantém apenas o seu último controlo, não um histórico completo de cada verificação. Para ver verificações anteriores, use a tag SQL nas execuções iniciadas pela condição, ou o histórico de consultas.
- As verificações são feitas no seu SQL Warehouse e são faturadas como utilização do SQL Warehouse. Uma verificação pode iniciar um armazém de dados parado.
- Os gatilhos com condições SQL contam para o limite do espaço de trabalho de 12.000 gatilhos ativos.