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.
Você pode usar gatilhos de atualização de tabela para disparar uma execução de seu trabalho quando as tabelas de origem são atualizadas. Use esse recurso para executar um trabalho quando novos dados estiverem prontos sem a necessidade de um cluster em execução contínua 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 que estão sendo monitoradas pelo gatilho são atualizadas. Os gatilhos de atualização de tabela não incorrem em custos adicionais, além dos custos do provedor de nuvem associados à listagem de tabelas e à leitura de atualizações do local de armazenamento.
Um gatilho de atualização de tabela pode ser configurado para monitorizar uma ou mais tabelas para alterações de dados, como atualizações, fusões e eliminações. Estas tabelas podem ser tabelas geridas pelo Unity Catalog Delta e Iceberg, tabelas externas do Unity Catalog apoiadas por Delta Lake, visualizações materializadas, tabelas de streaming e vistas do Unity Catalog ou vistas métricas que dependem das tabelas suportadas. Ao selecionar múltiplas tabelas, pode especificar se uma tarefa é ativada quando alguma ou todas as tabelas são atualizadas.
Também pode configurar gatilhos em tabelas e vistas do OpenSharing e em tabelas do sistema. Veja Adicionar um gatilho ao OpenSharing e às tabelas do sistema.
Requirements
A identidade configurada no campo Run as do trabalho deve ter SELECT permissões em todos os objetos monitorizados pelo acionador, porque o acionador lê os metadados e o histórico de alterações de cada objeto para detetar atualizações. Isto aplica-se a todas as origens suportadas:
-
Tabelas do Catálogo Unity:
SELECTna tabela, maisUSE CATALOGeUSE SCHEMAno seu catálogo e esquema. -
Vistas do Catálogo Unity:
SELECTnas permissões das tabelas subjacentes da vista. -
Partilhar objetos e tabelas de sistema do OpenSharing:
SELECTno objeto partilhado ou tabela de sistema.
Se o principal Run as não tiver SELECT num objeto monitorizado, o gatilho não é avaliado e o job não é executado. Para rever ou alterar a identidade com que um trabalho é executado, veja Configurar o utilizador Executar como para execuções de trabalhos.
Adicionar um gatilho de atualização de tabela
Para adicionar um gatilho de atualização de tabela a um trabalho existente:
Na barra de navegação à esquerda do espaço de trabalho, clique em Tarefas & Pipelines.
Na lista de trabalhos, clique no nome do trabalho ao qual você deseja adicionar um gatilho.
No painel direito, em Agendamentos e Gatilhos, clique em Adicionar gatilho.
Em Tipo de gatilho, selecione Atualização de tabela.
Em Tabelas, adicione as tabelas que deseja monitorar em busca de atualizações.
Se selecionar mais de uma tabela, configure uma opção em Gatilho quando para especificar se a execução de um trabalho deve ser 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 gatilhos 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 este período só desencadeiam uma execução após o fim do tempo de espera. O Azure 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 na tabela durante este período reiniciam o cronómetro. Essa configuração pode ser usada quando as atualizações de tabela vêm em lotes, e todo o lote precisa ser processado depois que todas as tabelas são atualizadas.
Observação
Se ambas as opções forem usadas, o gatilho aguardará o tempo mínimo entre os gatilhos e, em seguida, aguardará a quantidade definida de tempo após a última alteração. Por exemplo, se tiver um tempo mínimo de 120 segundos e uma espera após as últimas alterações de 60 segundos, então a execução não é ativada até que tenham passado pelo menos 120 segundos, mesmo que a atualização da tabela ocorra nos primeiros 60 segundos. Além disso, se uma atualização chegar aos 5 segundos e outra aos 115 segundos, então a espera após a última alteração significa que uma corrida só é desencadeada após 175 segundos.
Para validar a configuração, clique em Gatilho de teste.
Clique em Salvar.
Observação
Você também pode configurar gatilhos de atualização de tabela a partir da API de trabalhos. Adicione um objeto trigger a uma jobs/create, jobs/update, ou jobs/reset operação.
Para editar, pausar ou remover este gatilho mais tarde, use a secção Agendamentos e Disparadores do painel de detalhes do trabalho . Consulte Gerir acionadores existentes.
Para iniciar uma execução apenas quando os seus dados estiverem prontos, pode adicionar uma condição SQL a este gatilho (Beta). Consulte Adicionar condições SQL a acionadores de tarefas.
Adicionar um gatilho ao OpenSharing e às tabelas do sistema
Para além das tabelas locais, pode configurar gatilhos de atualização de tabelas para monitorizar dados partilhados com o seu espaço de trabalho através do OpenSharing e tabelas do sistema. Por exemplo, pode ativar um trabalho sempre que novos registos de faturação aparecem numa tabela do sistema, ou sempre que um fornecedor atualiza uma tabela partilhada.
Pode desencadear nos seguintes objetos partilhados:
- Tabelas OpenSharing
- Visualizações OpenSharing
- Visualizações de métricas do OpenSharing
- Vistas materializadas do OpenSharing
- Tabelas de streaming OpenSharing
- Tabelas do sistema
Siga os passos em Adicionar um gatilho de atualização de tabela e selecione as tabelas partilhadas, vistas ou tabelas de sistema que pretende monitorizar.
Disparadores para atualização de tabelas com eventos de ficheiros
Para obter o melhor desempenho e escalabilidade, habilite eventos de arquivo no local externo onde as tabelas estão armazenadas. Esta etapa de configuração única melhora a eficiência dos gatilhos de atualização de tabela e desbloqueia outros recursos, incluindo o Auto Loader mais eficiente e gatilhos de chegada de arquivos.
Quando os eventos de arquivo são ativados, o Databricks rastreia automaticamente os metadados de ingestão usando notificações de alteração do provedor de nuvem, resultando em atualizações de tabela mais rápidas e eficientes.
Eventos de ficheiro são necessários para que um gatilho monitorize mais de 10 tabelas. Veja como as tabelas contam para o limite de gatilho.
Se suas tabelas estiverem no armazenamento de nível raiz do metastore, primeiro converta-as em um local externo e, em seguida, habilite eventos de arquivo nesse local.
Para perguntas comuns sobre eventos de ficheiro, consulte FAQ sobre eventos de ficheiros.
Parâmetros de trabalho 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 estão 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 trabalho. -
{{job.trigger.table_update.`<catalog.schema.table>`.commit_timestamp.iso_datetime}}- A marca temporal de confirmação mais recente que iniciou a execução do trabalho. -
{{job.trigger.table_update.`<catalog.schema.table>`.version}}- A versão de commit mais recente que desencadeou a execução do trabalho.
Para commit_timestamp e version, existem várias versões da referência de valor dinâmico. Cada tabela monitorizada tem um <catalog.schema.table> com o nome totalmente qualificado da tabela para a qual pretende os dados. Se houver apenas uma tabela a ser monitorizada no acionador, é apresentado 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 trabalhos.
Receber notificações de erros de disparadores de atualização de tabela
Para ser notificado se um gatilho de atualização de tabela falhar na avaliação, configure notificações por e-mail ou no destino do sistema sobre falha do processo. Consulte Adicionar notificações numa tarefa.
Limitações
Os gatilhos de atualização de tabela têm as seguintes limitações:
- Um gatilho pode monitorizar até 25 tabelas. Para monitorizar mais de 10 tabelas, os eventos de ficheiro devem estar ativados para cada tabela monitorizada. Veja como as tabelas contam para o limite de gatilho.
- Para tabelas que residem em locais sem eventos de ficheiro, pode ser configurado um máximo de 1.000 trabalhos com um gatilho de atualização de tabela.
- Pode ser criado um máximo de 1.000 gatilhos de atualização de tabela em objetos OpenSharing ou tabelas do sistema por workspace.
- O OpenSharing entre domínios regulatórios não é suportado para gatilhos de atualização de tabelas.
Os gatilhos nas vistas do Unity Catalog têm as seguintes limitações adicionais:
Os gatilhos de atualização de tabela suportam apenas a monitorização de vistas do Catálogo Unity ou vistas métricas que dependem de tabelas também suportadas por gatilhos de atualização de tabelas. Notavelmente, as seguintes opiniões não são suportadas:
- Vistas que usam
read_files(podem ler de uma tabela suportada que lê ficheiros, mas não podem usarread_filesdiretamente ). - Vistas que dependem de tabelas que não estão no Unity Catalog.
- Vistas que dependem de tabelas federadas.
- Vistas que usam
A criação de gatilhos para vistas contendo dependências não suportadas continua a ser bem-sucedida, mas nenhuma execução de tarefas é acionada quando uma dependência não suportada é atualizada.
A atualização de tabela desencadeia alterações monitorizadas nas tabelas dependentes de uma vista e considera a vista atualizada caso alguma das tabelas dependentes seja atualizada. É possível que uma execução de tarefa seja desencadeada para modificações de dados que são filtradas pela definição de visualização.
As tabelas de origem para uma vista contam até ao limite de 25 tabelas por trigger quando os eventos do ficheiro são ativados para cada uma das tabelas. Quando os eventos do ficheiro são desativados, o limite é 10.
- Por exemplo, se uma vista depende de 26 tabelas, não é possível usá-la num gatilho de atualização de tabela. De forma semelhante, um gatilho com duas vistas, cada uma dependente de 14 tabelas, conta como 28 tabelas.
Como as tabelas contam para o limite de acionamento
O limite de tabela aplica-se às tabelas físicas que um trigger monitoriza, não ao número de objetos que o utilizador seleciona:
- Cada tabela, vista materializada ou tabela em streaming conta como uma tabela.
- Cada vista ou vista métrica equivale ao número de tabelas fonte de que depende. As tabelas de origem são contadas separadamente para cada vista, pelo que uma tabela da qual dependem duas vistas monitorizadas conta duas vezes.
Para monitorizar mais de 10 tabelas, ative eventos de arquivo em todas as tabelas monitorizadas, incluindo as tabelas de origem das vistas monitorizadas. Se alguma destas tabelas não tiver eventos de ficheiro ativados, um gatilho que monitorize mais de 10 tabelas não pode ser guardado ou falha na avaliação. Se os eventos do ficheiro forem posteriormente desativados numa destas tabelas, a avaliação do acionador falha até que reative os eventos do ficheiro ou reduza o acionador para 10 tabelas ou menos.