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.

Importante

Acionar trabalhos em tabelas e visualizações do OpenSharing e em tabelas do sistema está em Beta. Consulte Adicionar um gatilho ao OpenSharing e às tabelas do sistema.

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. Ao selecionar várias tabelas, você pode especificar se um trabalho é disparado quando qualquer uma ou todas as tabelas são atualizadas.

Você também pode configurar gatilhos em tabelas e exibições do OpenSharing e em tabelas do sistema (Beta). Consulte Adicionar um gatilho ao OpenSharing e às tabelas do sistema.

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 disparam uma execução somente após 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 significa que uma execução não é disparada até depois de 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.

Para editar, pausar ou remover esse gatilho posteriormente, use a seção Agendas & Gatilhos do painel detalhes do trabalho . Consulte Gerenciar um gatilho existente.

Adicionar um gatilho ao OpenSharing e às tabelas do sistema

Importante

Essa funcionalidade está em Beta.

Além das tabelas locais, você pode configurar gatilhos de atualização de tabela para monitorar dados compartilhados com seu workspace por meio do OpenSharing e tabelas do sistema. Por exemplo, você pode disparar um trabalho sempre que novos registros de cobrança chegam em uma tabela do sistema ou sempre que um provedor atualiza uma tabela compartilhada.

Você pode disparar nos seguintes objetos compartilhados:

  • Tabelas do OpenSharing
  • Visualizações do OpenSharing
  • Visualizações de métricas do OpenSharing
  • Visões materializadas do OpenSharing
  • Tabelas de streaming do OpenSharing
  • Tabelas do sistema

Examine as limitações de gatilho do OpenSharing e siga as etapas em Adicionar um gatilho de atualização de tabela e selecione as tabelas compartilhadas, exibições ou tabelas do sistema que você deseja monitorar.

Limitações de acionamento do OpenSharing

  • Esse recurso dá suporte apenas ao Databricks-to-Databricks OpenSharing. O compartilhamento Databricks-to-Open não é compatível.

  • Para ser acionado para tabelas e visualizações compartilhadas, o beta deve ser habilitado tanto no lado do destinatário quanto no do provedor:

    • Gatilhos de atualização de tabelas no OpenSharing (Destinatário): um recurso beta no nível do workspace, habilitado no workspace do destinatário em que o gatilho é criado.
    • Gatilhos de atualização de tabela no OpenSharing (Provedor): um recurso beta no nível da conta, habilitado na conta do provedor que possui os dados compartilhados.

    Para tabelas do sistema, somente o destinatário beta é necessário. Para habilitar, consulte Gerenciar Azure Databricks visualizações.

  • O usuário que cria o gatilho deve ter o SELECT privilégio na tabela do sistema ou objeto compartilhado.

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.

Para obter perguntas comuns sobre eventos de arquivo, consulte Perguntas frequentes sobre eventos de arquivo.

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 tem um <catalog.schema.table> com o nome totalmente qualificado da tabela da qual você deseja obter 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.
  • No máximo, 1.000 gatilhos de atualização de tabelas em objetos OpenSharing ou tabelas do sistema podem ser criados por espaço de trabalho.

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:

    • Visualizações que usam read_files (podem ler de uma tabela compatível com leitura de 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 é bem-sucedida, mas nenhuma execução de trabalho é disparada quando uma dependência sem suporte é 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, conta como 12 tabelas.
  • Há um limite separado de 10 exibições dependentes por exibição monitorada.

    • Por exemplo, se uma exibição depender de 11 outras 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.