Share via


Criar um gatilho de evento personalizado para executar um pipeline no Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

A EDA (arquitetura controlada por evento) é um padrão de integração de dados comum que envolve produção, detecção, consumo e reação a eventos. Os cenários de integração de dados geralmente exigem que os clientes do Azure Data Factory disparem pipelines quando determinados eventos ocorrem. A integração nativa do Data Factory com a Grade de Eventos do Azure agora aborda tópicos personalizados. Você envia eventos para um tópico da grade de eventos. O Data Factory assina o tópico, escuta e dispara pipelines de acordo.

Observação

A integração descrita neste artigo depende na Grade de Eventos do Azure. Verifique se a assinatura está registrada no provedor de recursos da Grade de Eventos. Para saber mais, veja Provedores e tipos de recursos. Você deve conseguir fazer a ação Microsoft.EventGrid/eventSubscriptions/. Essa ação faz parte da função interna de Colaborador do EventSubscription de EventGrid.

Importante

Se estiver usando esse recurso no Azure Synapse Analytics, verifique se a sua assinatura também está registrada no provedor de recursos do Data Factory ou você receberá um erro indicando falha na criação de uma "assinatura de evento".

Se você combinar parâmetros de pipeline e um gatilho de evento personalizado, poderá analisar e referenciar conteúdos personalizados de data em execuções de pipeline. Como o campo data em uma carga do evento personalizado é uma estrutura de chave-valor JSON de forma livre, você pode controlar as execuções de pipeline controladas por eventos.

Importante

Se uma chave referenciada na parametrização estiver ausente na carga do evento personalizado, trigger run falhará. Você obterá um erro informando que a expressão não pode ser avaliada porque a propriedade keyName não existe. Nesse caso, nenhumpipeline run será disparado pelo evento.

Configurar um tópico personalizado na Grade de Eventos

Para usar o gatilho de evento personalizado no Data Factory, primeiro você precisa configurar um tópico personalizado na Grade de Eventos.

Acesse a Grade de Eventos do Azure e crie o tópico por conta própria. Para obter mais informações sobre como criar o tópico personalizado, confira os Tutoriais do Portal e os Tutoriais da CLI da Grade de Eventos do Azure.

Observação

O fluxo de trabalho é diferente do gatilho de evento de armazenamento. Aqui, o Data Factory não configura o tópico para você.

O Data Factory espera que os eventos sigam o esquema de evento da Grade de Eventos. Verifique se as cargas do evento têm os seguintes campos:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Usar o Data Factory para criar um gatilho de evento personalizado

  1. Acesse o Azure Data Factory e entre com sua conta.

  2. Alterne para a guia Editar. Procure o ícone de lápis.

  3. Selecione Gatilho no menu e Novo/Editar.

  4. Na página Adicionar Gatilhos, selecione Escolher gatilho e +Novo.

  5. Selecione Eventos personalizados para Tipo.

    Screenshot of Author page to create a new custom event trigger in Data Factory UI.

  6. Selecione o tópico personalizado na lista suspensa de assinatura do Azure ou insira manualmente o escopo do tópico de evento.

    Observação

    Para criar ou modificar um gatilho de evento personalizado no Data Factory, você precisa usar uma conta do Azure com o RBAC (controle de acesso baseado em função) do Azure apropriado. Nenhuma permissão adicional é necessária. A entidade de serviço do Data Factory não requer permissão especial para a Grade de Eventos. Para mais informações sobre o controle de acesso, confira a seção Controle de acesso baseado em função.

  7. As propriedades Assunto começa com em Assunto termina com permitem filtrar eventos de gatilho. As duas propriedades são opcionais.

  8. Use + Novo para adicionar os Tipos de Eventos que você deseja filtrar. A lista de gatilhos de eventos personalizados usa uma relação OR. Quando um evento personalizado com uma propriedade eventType corresponde a um na lista, uma operação de pipeline é disparada. O tipo de evento não diferencia as letras maiúsculas e minúsculas. Por exemplo, na captura de tela a seguir, o gatilho corresponde a todos os eventos copycompleted ou copysucceeded que têm um assunto que começa com factories.

    Screenshot of Edit Trigger page to explain Event Types and Subject filtering in Data Factory UI.

  9. O gatilho de evento personalizado pode analisar e enviar um conteúdo de data personalizado para o pipeline. Crie os parâmetros de pipeline e preencha os valores na página Parâmetros. Use o formato @triggerBody().event.data._keyName_ para analisar o conteúdo de dados e passar valores para os parâmetros de pipeline.

    Para uma explicação detalhada, confira os seguintes artigos:

    Screenshot of pipeline parameters settings.

    Screenshot of the parameters page to reference data payload in custom event.

  10. Depois de inserir os parâmetros, selecione OK.

Filtragem avançada

O gatilho de evento personalizado dá suporte a funcionalidades avançadas de filtragem, semelhantes à Filtragem Avançada da Grade de Eventos. Esses filtros condicionais permitem que os pipelines disparem com base nos valores da carga do evento. Por exemplo, você pode ter um campo na carga do evento chamado Departamento, e o pipeline disparará apenas se Departamento for igual a Finanças. Também é possível especificar uma lógica complexa, como o campo data na lista [1, 2, 3, 4, 5], o campo mês que não está na lista [11, 12], o campo marca que contém qualquer valor de ["Ano Fiscal 2021", "AnoFiscal2021", "AF2021"].

Screenshot of setting advanced filters for customer event trigger

A partir de hoje, o gatilho de evento personalizado dá suporte a um subconjunto de operações de filtragem avançada na Grade de Eventos. Há suporte para as seguintes condições de filtro:

  • NumberIn
  • NumberNotIn
  • NumberLessThan
  • NumberGreaterThan
  • NumberLessThanOrEquals
  • NumberGreaterThanOrEquals
  • BoolEquals
  • StringContains
  • StringBeginsWith
  • StringEndsWith
  • StringIn
  • StringNotIn

Clique em +Novo para adicionar novas condições de filtro.

Além disso, os gatilhos de evento personalizados obedecem aos mesmos limites que a Grade de Eventos, incluindo:

  • Cinco filtros avançados e 25 valores de filtro em todos os filtros por gatilho de evento personalizado
  • 512 caracteres por valor de cadeia de caracteres
  • Cinco valores para os operadores ‘em’ e ‘não está’
  • As chaves não podem ter o caractere . (dot), por exemplo, john.doe@contoso.com. No momento, não há suporte para caracteres de escape em chaves.
  • A mesma chave pode ser usada em mais de um filtro.

O Data Factory depende da versão mais recente de GA da API de Grade de Eventos. À medida que novas versões da API chegarem ao estágio GA, o Data Factory expandirá seu suporte para operadores de filtragem mais avançados.

JSON schema

A seguinte tabela fornece uma visão geral dos elementos do esquema relacionados aos gatilhos de eventos personalizados:

Elemento JSON Descrição Type Valores permitidos Obrigatório
scope A ID do recurso do Azure Resource Manager do tópico da Grade de Eventos. String ID do Azure Resource Manager Sim
events O tipo de eventos que causam o acionamento desse gatilho. Matriz de cadeia de caracteres Sim, pelo menos um valor é esperado.
subjectBeginsWith O campo subject deve começar com o padrão fornecido para disparar o gatilho. Por exemplo, factories só acionam o gatilho para objetos de evento que começam com factories. String Não
subjectEndsWith O campo subject deve começar com o padrão fornecido para disparar o gatilho. String Não
advancedFilters Lista de blobs JSON, cada um especificando uma condição de filtro. Cada blob especifica key, operatorType e values. Lista de blobs JSON Não

Controle de acesso baseado em funções

O Azure Data Factory usa o RBAC (controle de acesso baseado em função) do Azure para proibir o acesso não autorizado. Para funcionar corretamente, o Data Factory requer acesso para:

  • Escutar eventos.
  • Assinar atualizações de eventos.
  • Disparar pipelines vinculados a eventos personalizados.

Para criar ou atualizar um gatilho de evento personalizado com êxito, você precisa entrar no Data Factory com uma conta do Azure que tenha acesso apropriado. Caso contrário, a operação falhará com um erro de Acesso negado.

O Data Factory não requer permissão especial para sua Grade de Eventos. Você também não precisa atribuir permissão especial do Azure RBAC à entidade de serviço do Data Factory para a operação.

Especificamente, você precisa da permissão Microsoft.EventGrid/EventSubscriptions/Write em /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics.

  • Durante a criação no data factory (no ambiente de desenvolvimento, por exemplo), a conta do Azure conectada precisa ter a permissão acima
  • Na publicação por meio da CI/CD, a conta usada para publicar o modelo do ARM no alocador de teste ou de produção precisa ter a permissão acima.