Acionar tarefa quando tabelas de origem são atualizadas
Você pode usar gatilhos de atualização de tabela para acionar uma execução do seu Job quando as tabelas de origem são atualizadas. Use este recurso para executar um Job quando novos dados estiverem prontos sem a necessidade de um clustercontínuo em execução ou conhecimento dos processos que atualizam uma tabela.
Como funcionam os gatilhos de atualização de tabela?
Um gatilho de atualização de tabela verifica se há atualizações de tabela e, quando uma tabela é atualizada, o trabalho é executado. O gatilho pode ser executado quando uma tabela é atualizada ou quando todas as tabelas monitoradas pelo gatilho são atualizadas. Os gatilhos de atualização de tabela não geram custos adicionais além dos custos do provedor cloud associados à listagem de tabelas e à leitura de atualizações do local de armazenamento.
Um gatilho de atualização de tabela pode ser configurado para monitorar uma ou mais tabelas em busca de alterações de dados, como atualizações, mesclagens e exclusões. Essas tabelas podem ser tabelas gerenciais Unity Catalog Delta e Iceberg , tabelas externas Unity Catalog suportadas pelo Delta Lake, visualização materializada e tabelas de transmissão são suportadas. visualização e tabelas compartilhadas via Delta Sharing não são suportadas. Ao selecionar várias tabelas, você pode especificar se um trabalho será acionado quando qualquer uma ou todas as tabelas forem atualizadas.
Adicionar um gatilho de atualização de tabela
Para adicionar um gatilho de atualização de tabela a um trabalho existente:
-
Na navegação à esquerda do seu workspace, clique em Trabalhos e pipeline .
-
Na lista de Tarefas, clique no nome da Tarefa à qual você deseja adicionar um gatilho.
-
No painel direito, em Programar & Triggers , clique em Adicionar gatilho .
-
Em Tipo de gatilho, selecione Atualização de tabela .
-
Em Tabelas , adicione as tabelas que você deseja monitorar para atualizações.
Se você selecionar mais de uma tabela, configure uma opção em Acionar quando para especificar se deseja que uma execução de Job seja acionada quando Todas as tabelas forem atualizadas ou quando Qualquer tabela for atualizada .
-
(Opcional) Configure opções avançadas clicando em Avançado .
- Tempo mínimo entre acionamentos em segundos : o tempo mínimo de espera para acionar uma execução após a conclusão de uma execução anterior. As tabelas atualizadas durante esse período acionarão uma execução somente após o tempo de espera expirar. O Databricks aguarda esse período de tempo antes de acionar uma execução, mesmo que as tabelas monitoradas sejam atualizadas.
- Aguarde após a última alteração em segundos : o tempo de espera para acionar uma execução após uma atualização de tabela. Atualizações adicionais da tabela durante este período Reinicie o cronômetro. Esta configuração pode ser usada quando as atualizações de tabelas ocorrem em lotes, e todos os lotes precisam ser processados depois que todas as tabelas forem atualizadas.
Se ambas as opções forem usadas, o gatilho aguardará o tempo mínimo entre os gatilhos e, em seguida, aguardará o tempo definido após a última alteração. Por exemplo, se você tiver um tempo mínimo de 120 segundos e uma espera após as últimas alterações de 60 segundos, a execução não será acionada até que pelo menos 120 segundos tenham decorrido, mesmo que uma atualização de tabela ocorra nos primeiros 60 segundos. Além disso, se uma atualização chegar em 5 segundos e outra em 115 segundos, a espera após a última alteração significará que uma execução não será acionada até depois de 175 segundos.
-
Para validar a configuração, clique em Testar gatilho .
-
Clique em Salvar .
Você também pode configurar gatilhos de atualização de tabela na API de trabalhos. Adicione um objeto trigger
a uma operação jobs/create
, jobs/update
ou jobs/reset
.
Gatilhos de atualização de tabela com eventos de arquivo gerenciar
Para melhor desempenho e escalabilidade, habilite eventos de arquivo no local externo onde as tabelas estão armazenadas. Esta configuração única melhora a eficiência dos gatilhos de atualização de tabela e desbloqueia outros recursos, incluindo Auto Loader e gatilhos de chegada de arquivo de melhor desempenho.
Quando eventos de arquivo são habilitados, Databricks rastreia automaticamente metadados de ingestão usando notificações de alteração do provedor cloud , resultando em atualizações de tabela mais rápidas e eficientes.
Se suas tabelas estiverem no armazenamento de nível raiz do metastore, primeiro converta-as para um local externo e, em seguida, habilite eventos de arquivo nesse local.
ParâmetrosJob associados a gatilhos de atualização de tabela
Quando você usa gatilhos de atualização de tabela para um trabalho, três novas referências de valor dinâmico ficam disponíveis para uso como valores de parâmetro no trabalho.
{{job.trigger.table.updated_tables}}
- Uma lista JSON de tabelas atualizadas desde a última execução do Job.{{job.trigger.table.<catalog.schema.table>.commit_timestamp.iso_datetime}}
- o registro de data e hora de commit mais recente que acionou a execução do Job.{{job.trigger.table.<catalog.schema.table>.version}}
- a versão commit mais recente que acionou a execução do Job.
Para commit_timestamp
e version
, há várias versões da referência de valor dinâmico. Cada tabela monitorada terá um <catalog.schema.table>
com o nome totalmente qualificado da tabela para a qual você deseja dados. Se houver apenas uma tabela sendo monitorada no gatilho, você verá um valor sem o <catalog.schema.table>
. Por exemplo, você pode usar {{job.trigger.table.commit_timestamp.iso_datetime}}
.
Para obter mais informações sobre parâmetros de trabalho, consulte Parametrizar trabalho.
Receber notificações de gatilhos de atualização de tabela com falha
Para ser notificado caso um gatilho de atualização de tabela não seja avaliado, configure notificações de destino email ou sistema em caso de falha de tarefa. Consulte Adicionar notificações em um trabalho.
Limitações
- Você pode ter até 1000 gatilhos de atualização de tabela por workspace.
- Você pode selecionar até 10 tabelas de gerenciamento ou Delta por gatilho.