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 Delta e Iceberg Unity Catalog , tabelas externas Unity Catalog com suporte do Delta Lake, visualizações materializadas, tabelas de transmissão e visualizações ou métricas Unity Catalog que dependem de tabelas suportadas. Outras visualizações e tabelas compartilhadas por meio do Delta Sharing não são compatíveis. Ao selecionar várias tabelas, você pode especificar se uma tarefa será acionada 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_update.updated_tables}}- Uma lista JSON de tabelas atualizadas desde a última execução do Job.{{job.trigger.table_update.`<catalog.schema.table>`.commit_timestamp.iso_datetime}}- o carimbo de data/hora commit mais recente que desencadeou a execução do Job.{{job.trigger.table_update.`<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_update.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
Os gatilhos de atualização de tabelas têm as seguintes limitações:
- Você pode selecionar até 10 tabelas de gerenciamento ou Delta por gatilho.
Os gatilhos na visualizaçãoUnity Catalog têm as seguintes limitações adicionais:
-
Os gatilhos de atualização de tabela suportam apenas o monitoramento da visualização Unity Catalog ou da visualização de métricas que dependem de tabelas que também são suportadas por gatilhos de atualização de tabela. É importante destacar que as seguintes visualizações não são suportadas:
- visualização que usa em
read_files(eles podem ler de uma tabela suportada que lê arquivos, mas não podem usar diretamenteread_files). - visualizações que dependem de tabelas que não estão no Unity Catalog.
- visão que depende de tabelas federadas.
- visualização que usa em
-
A criação de gatilhos para visualizações que contenham dependências não suportadas ainda será bem-sucedida, mas nenhuma execução de tarefa será acionada quando uma dependência não suportada for atualizada.
-
Os gatilhos de atualização de tabela monitoram as alterações nas tabelas dependentes de uma view e consideram a view atualizada se alguma das tabelas dependentes for atualizada. É possível que a execução de um Job seja acionada para alterações de dados que são filtradas pela definição view .
-
As tabelas de origem para uma view são contabilizadas no limite de 10 tabelas por gatilho.
- Por exemplo, se uma view depender de 11 tabelas, não será possível usá-la em um gatilho de atualização de tabela. Da mesma forma, um gatilho com duas visualizações, cada uma dependendo de 6 tabelas, contará como 12 tabelas.
-
Existe um limite separado de 10 visualizações dependentes por view monitorada.
- Por exemplo, se uma view depende de outras 11 visualizações, não será possível usá-la em um gatilho de atualização de tabela, mesmo que isso não viole a regra de 10 tabelas por gatilho.