Compartilhar via


Executar trabalhos quando as tabelas de origem são atualizadas

Você pode usar gatilhos de atualização de tabela para disparar uma execução do 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 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 monitorar uma ou mais tabelas para alterações de dados, como atualizações, mesclagens e exclusões. Essas tabelas podem ser tabelas gerenciadas pelo Delta e Iceberg do Catálogo Unity, tabelas externas do Catálogo Unity suportadas pelo Delta Lake, visões materializadas, tabelas de streaming e visões do Catálogo Unity ou visões métricas que dependem de tabelas com suporte. Não há suporte para outras exibições e tabelas compartilhadas por meio do Delta Sharing. Ao selecionar várias tabelas, você pode especificar se um trabalho é disparado quando qualquer uma ou todas as tabelas são atualizadas.

Adicionar um gatilho de atualização de tabela

Para adicionar um gatilho de atualização de tabela a um trabalho existente:

  1. Na navegação à esquerda da área de trabalho, clique em Jobs & Pipelines.

  2. Na lista de trabalhos, clique no nome do trabalho ao qual você deseja adicionar um gatilho.

  3. No painel direito, em Agendas > Gatilhos, clique em Adicionar gatilho.

  4. No tipo gatilho, selecione Atualização de tabela.

  5. 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 tarefa seja disparada quando todas as tabelas forem atualizadas ou quando qualquer tabela for atualizada.

  6. (Opcional) Configure opções avançadas clicando em Avançado.

    • Tempo mínimo entre acionamentos em segundos: o tempo mínimo de espera para disparar uma execução após a conclusão de uma execução anterior. As tabelas atualizadas durante esse período dispararão uma execução somente depois que o tempo de espera expirar. O Azure Databricks aguarda esse tempo antes de disparar uma execução, mesmo se as tabelas monitoradas forem atualizadas.
    • Aguarde após a última alteração em segundos: o tempo de espera para disparar uma execução após uma atualização da tabela. Atualizações de tabela adicionais durante esse período redefinem o temporizador. 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 gatilhos e 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, ela não disparará a execução 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 depois outra em 115 segundos, a espera após a última alteração significará que uma execução só será disparada após 175 segundos.

  7. Para validar a configuração, clique em Testar gatilho.

  8. Clique em Salvar.

Observação

Você também pode configurar os triggers de atualização de tabela da Jobs API. Adicione um trigger objeto a uma jobs/create, jobs/update, ou jobs/reset operação.

Gatilhos de atualização de tabela com eventos de arquivos

Para obter melhor desempenho e escalabilidade, habilite eventos de arquivo no local externo onde as tabelas são armazenadas. Esta etapa de instalação única melhora a eficiência dos gatilhos de atualização de tabela e desbloqueia outros recursos, incluindo o Carregador Automático com mais desempenho e gatilhos de chegada de arquivo.

Quando os eventos de arquivo são habilitados, o Databricks controla 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.

Se as tabelas estiverem no armazenamento no nível raiz do metastore, primeiro converta-as em um local externo e habilite os eventos de arquivo nesse local.

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}} - o timestamp da confirmação mais recente que disparou a execução do trabalho.
  • {{job.trigger.table_update.`<catalog.schema.table>`.version}} - a versão de commit mais recente que iniciou a execução da tarefa.

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 os 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 trabalhos.

Receber notificações de falhas em gatilhos de atualização de tabela

Para ser notificado se um gatilho de atualização de tabela não for avaliado, configure notificações de destino do sistema ou email sobre falha no trabalho. Confira Adicionar notificações sobre um trabalho.

Limitações

Os gatilhos de atualização de tabela têm as seguintes limitações:

  • Você pode selecionar até 10 tabelas gerenciadas ou Delta para cada gatilho.
  • Para tabelas que residem em locais sem eventos de arquivo, um máximo de 1.000 trabalhos pode ser configurado com um gatilho de atualização de tabela.

Os gatilhos nos views do Unity Catalog têm as seguintes limitações adicionais:

  • Os gatilhos de atualização de tabela suportam apenas o monitoramento de exibições do Catálogo do Unity ou de exibições de métrica que dependem de tabelas que também são suportadas por gatilhos de atualização de tabela. Importante, não há suporte para as seguintes visualizações:

    • Exibições que usam read_files (elas podem ler de uma tabela aceita que lê arquivos, mas não podem usar read_files diretamente).
    • Visões que dependem de tabelas que não estão no Catálogo do Unity.
    • Visões que dependem de tabelas federadas.
  • A criação de gatilhos para exibições que contêm dependências sem suporte ainda terá êxito, mas nenhuma execução de trabalho será disparada quando uma dependência sem suporte for atualizada.

  • A atualização de tabela dispara o monitor de alterações nas tabelas dependentes de um modo de exibição e considera a exibição atualizada se qualquer uma das tabelas dependentes for atualizada. É possível que a execução de um trabalho seja ativada para alterações de dados que são filtradas pela definição de exibição.

  • As tabelas de origem de uma exibição são contadas para o limite de 10 tabelas por gatilho.

    • Por exemplo, se uma exibição 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 dois modos de exibição, cada um dependendo de seis tabelas, contará como 12 tabelas.
  • Há um limite separado de 10 exibições dependentes por exibição monitorada.

    • Por exemplo, se uma exibição depender de outras 11 exibições, não será possível usá-la em um gatilho de atualização de tabela, mesmo que isso não interrompa as 10 tabelas por regra de gatilho.