Partilhar via


Copie dados e envie notificações por e-mail sobre sucesso e fracasso

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

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

Neste tutorial, vai criar um pipeline do Data Factory que demonstra algumas das funcionalidades de fluxo de controlo. Este pipeline faz uma cópia simples de um contentor na Azure Blob Storage para outro contentor na mesma conta de armazenamento. Se a atividade de cópia tiver êxito, o pipeline envia detalhes da operação de cópia bem-sucedida (por exemplo, a quantidade de dados escritos) num e-mail de sucesso. Se a atividade de cópia falhar, o pipeline envia detalhes da falha da cópia (por exemplo, a mensagem de erro) através de um e-mail de notificação de falha. Ao longo do tutorial, vai ver como passar os parâmetros.

Uma visão geral de alto nível do cenário: O diagrama mostra o Armazenamento de Blobs do Azure, que é o destino de uma cópia, que, em caso de sucesso, envia um email com detalhes ou, em caso de falha, envia um email com detalhes de erro.

Vai executar os seguintes passos neste tutorial:

  • Criar uma fábrica de dados.
  • Criar um serviço associado de Armazenamento do Azure
  • Criar um conjunto de dados do Blob do Azure
  • Criar um pipeline que inclua uma Copy Activity e uma Web Activity
  • Enviar saídas de atividades para atividades posteriores
  • Utilizar a passagem de parâmetros e as variáveis de sistema
  • Iniciar uma execução de pipeline
  • Monitorar o pipeline e as execuções de atividades

Este tutorial utiliza o portal do Azure. Pode utilizar outros mecanismos para interagir com o Azure Data Factory. Veja "Inícios rápidos" no índice.

Pré-requisitos

  • Subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Conta do Armazenamento do Azure. Utiliza o armazenamento de blobs como armazenamento de dados de origem. Se não tiver uma conta de armazenamento do Azure, veja o artigo Criar uma conta de armazenamento para obter os passos para criar uma.
  • Base de Dados SQL do Azure. Utiliza a base de dados como um repositório de dados sink. Se você não tiver um banco de dados no Banco de Dados SQL do Azure, consulte o artigo Criar um banco de dados no Banco de Dados SQL do Azure para conhecer as etapas para criar um.

Criar tabela de blobs

  1. Inicie o Bloco de Notas. Copie o texto seguinte e guarde-o como input.txt no disco.

    John,Doe
    Jane,Doe
    
  2. Utilize ferramentas como o Explorador de Armazenamento do Azure e siga os passos abaixo:

    1. Crie o contentor adfv2branch .
    2. Crie a pasta input no contentor adfv2branch.
    3. Carregue o ficheiro input.txt para o contentor.

Criar pontos finais de fluxo de trabalho de e-mail

Para acionar o envio de um email a partir do pipeline, utilize o Azure Logic Apps para definir o fluxo de trabalho. Para obter mais informações sobre como criar um fluxo de trabalho de aplicativo lógico, consulte Criar um exemplo de fluxo de trabalho de aplicativo lógico de consumo.

Fluxo de trabalho de e-mail de êxito

Crie um fluxo de trabalho do aplicativo lógico de consumo chamado CopySuccessEmail. Adicione o gatilho de solicitação chamado Quando uma solicitação HTTP for recebida e adicione a ação do Office 365 Outlook chamada Enviar um email. Se solicitado, inicie sessão na sua conta do Office 365 Outlook.

Mostra uma captura de tela do fluxo de trabalho de email Success.

Para o acionador Request, preencha o campo Request Body JSON Schema com o seguinte JSON:

{
    "properties": {
        "dataFactoryName": {
            "type": "string"
        },
        "message": {
            "type": "string"
        },
        "pipelineName": {
            "type": "string"
        },
        "receiver": {
            "type": "string"
        }
    },
    "type": "object"
}

O gatilho Pedido no designer de fluxo de trabalho deve ser semelhante à seguinte imagem:

Mostra uma captura de tela do designer de fluxo de trabalho com o gatilho Solicitação.

Para a ação Enviar um e-mail , personalize como deseja formatar o e-mail, utilizando as propriedades passadas no esquema JSON do corpo da solicitação. Segue-se um exemplo:

Mostra uma captura de tela do designer de fluxo de trabalho com a ação chamada Enviar um email.

Guarde o fluxo de trabalho. Tome nota do URL da sua requisição HTTP Post para o workflow de e-mail de sucesso.

//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

Fluxo de trabalho de e-mails falhados

Siga as mesmas etapas para criar outro fluxo de trabalho de aplicativo lógico chamado CopyFailEmail. No disparador de Pedido, o valor do esquema JSON Corpo de Pedido é o mesmo. Altere o formato do e-mail, como o Subject, para ajustá-lo a um e-mail de erro. Segue-se um exemplo:

Mostra uma captura de ecrã do editor de fluxos de trabalho com o fluxo de trabalho de e-mail com falha.

Guarde o fluxo de trabalho. Faça uma anotação do URL da solicitação HTTP Post para o fluxo de trabalho de email de erro.

//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

Agora, deve ter dois URLs de fluxo de trabalho:

//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

Criar uma fábrica de dados

  1. Abra o browser Microsoft Edge ou Google Chrome. Atualmente, a IU do Data Factory é suportada apenas nos browsers Microsoft Edge e Google Chrome.

  2. Expanda o menu no canto superior esquerdo e selecione Criar um recurso. Em seguida, selecione Analytics>Data Factory :

    Mostra uma captura de ecrã da seleção do Data Factory no painel

  3. Na página Nova fábrica de dados, introduza ADFTutorialDataFactory pelo nome.

    Nova página de fábrica de dados

    O nome do Azure Data Factory deve ser globalmente exclusivo. Se receber o seguinte erro, altere o nome da fábrica de dados (por exemplo, oseunomeADFTutorialDataFactory) e tente criar novamente. Veja o artigo Data Factory – Naming Rules (Data Factory – Regras de Nomenclatura) para obter as regras de nomenclatura dos artefactos do Data Factory.

    O nome da fábrica de dados "ADFTutorialDataFactory" não está disponível.

  4. Selecione a sua subscrição do Azure na qual pretende criar a fábrica de dados.

  5. No Grupo de Recursos, siga um destes passos:

  6. Selecione V2 para a versão.

  7. Selecione a localização da fábrica de dados. Só aparecem no menu suspenso as localizações que são suportadas. Os arquivos de dados (Armazenamento do Azure, Base de Dados SQL do Azure, etc.) e as computações (HDInsight, etc.) utilizados pela fábrica de dados podem estar noutras regiões.

  8. Selecione Afixar ao dashboard.

  9. Clique em Criar.

  10. Depois de concluída a criação, vai ver a página Data Factory, conforme mostrado na imagem.

    Mostra uma captura de tela da página inicial do data factory.

  11. Clique em Abrir o bloco do Azure Data Factory Studio para iniciar a interface do usuário (UI) do Azure Data Factory em uma guia separada.

Criar um fluxo de trabalho

Neste passo, vai criar um pipeline com uma atividade Copy e duas atividades Web. Utiliza as seguintes funcionalidades para criar o pipeline:

  • Parâmetros para o pipeline que são acessados por conjuntos de dados.
  • Atividade Web para invocar fluxos de trabalho de aplicações lógicas para enviar e-mails de êxito/falha.
  • Ligar uma atividade a outra (após êxito e falha)
  • Utilizar um resultado de uma atividade como entrada para a atividade subsequente
  1. Na página inicial da interface do usuário do Data Factory, clique no bloco Orquestrar .

    Mostra uma captura de tela da home page do data factory com o bloco Orchestrate realçado.

  2. Na janela de propriedades do pipeline, troque para o separador Parâmetros e utilize o botão Novo para adicionar os seguintes três parâmetros do tipo String: sourceBlobContainer, sinkBlobContainer e receiver.

    • sourceBlobContainer – parâmetro no pipeline consumido pelo conjunto de dados do blob de origem.
    • sinkBlobContainer - parâmetro no pipeline consumido pelo conjunto de dados de blob do coletor
    • receiver - este parâmetro é usado pelas duas atividades da Web no pipeline que enviam e-mails de sucesso ou falha para o destinatário cujo endereço de e-mail é especificado por este parâmetro.

    Mostra uma captura de ecrã do menu novo pipeline.

  3. Na caixa de ferramentas Atividades, procure por Copiar e arraste e solte a atividade Copiar para a superfície do designer do pipeline.

    Mostra uma captura de tela demonstrando como arrastar e soltar a atividade de cópia no designer de pipeline.

  4. Selecione a atividade Copiar que você arrastou para a superfície do designer de pipeline. Na janela Propriedades da atividade Copy, na parte inferior, mude para o separador Origem e clique em + Novo. Neste passo, vai criar um conjunto de dados de origem para a atividade de cópia.

    Captura de tela que mostra como criar um conjunto de dados de origem para a atividade de cópia.

  5. Na janela Novo Conjunto de Dados, selecione a guia Azure na parte superior e, em seguida, escolha Armazenamento de Blob do Azure e selecione Continuar.

    Mostra uma captura de tela do botão selecionar Armazenamento de Blob do Azure.

  6. Na janela Selecionar formato, escolha DelimitedText e selecione Continue.

    Mostra uma captura de tela do

  7. Você vê uma nova guia intitulada Definir propriedades. Altere o nome do conjunto de dados para SourceBlobDataset. Selecione o menu pendente Serviço Vinculado e escolha +Novo para criar um novo serviço vinculado ao seu conjunto de dados de origem.

    Mostra uma captura de tela da janela

  8. Você verá a janela Novo serviço de ligação onde pode preencher as propriedades necessárias para o serviço de ligação.

    Mostra uma captura de tela da janela de conexão do conjunto de dados com o novo botão de serviço vinculado realçado.

  9. Na janela Novo Serviço Ligado, conclua os passos abaixo:

    1. Introduza AzureStorageLinkedService em Nome.
    2. Selecione a sua conta de Armazenamento do Azure em Nome da conta de armazenamento.
    3. Clique em Criar.
  10. Na janela Definir propriedades que aparece em seguida, selecione Abrir este conjunto de dados para inserir um valor parametrizado para o nome do arquivo.

    Mostra uma captura de ecrã da janela

  11. Introduza @pipeline().parameters.sourceBlobContainer para a pasta e emp.txt para o nome do ficheiro.

    Mostra uma captura de tela das configurações do conjunto de dados de origem.

  12. Volte para a guia Pipeline (ou clique no pipeline na vista em árvore à esquerda) e selecione a atividade Copiar no painel de design. Confirme se novo conjunto de dados está selecionado como Conjunto de Dados de Origem.

    Mostra uma captura de tela do conjunto de dados de origem.

  13. Na janela de propriedades, mude para o separador Sink e clique em + Novo em Conjunto de Dados de Sink. Vai criar um conjunto de dados de destino para a atividade de cópia nesta etapa, de forma semelhante à forma como criou o conjunto de dados de origem.

    Mostra uma captura de ecrã do novo botão de conjunto de dados de destino

  14. Na janela Novo Conjunto de Dados, selecione Azure Blob Storage, clique em Continuar e, em seguida, selecione DelimitedText novamente na janela Selecionar formato e clique em Continuar novamente.

  15. Na página Definir propriedades para o conjunto de dados, insira SinkBlobDataset para Nome e selecione AzureStorageLinkedService para LinkedService.

  16. Expanda a seção Avançado da página de propriedades e selecione Abrir este conjunto de dados.

  17. Na guia Conexão do conjunto de dados, edite o caminho do arquivo. Digite @pipeline().parameters.sinkBlobContainer para a pasta e @concat(pipeline().RunId, '.txt') para o nome do arquivo. A expressão utiliza o ID da execução atual do pipeline no nome do ficheiro. Para obter a lista de variáveis e expressões do sistema suportadas, veja System variables (Variáveis do sistema) e Expression language (Linguagem de expressões).

    Exibe um screenshot das configurações do conjunto de dados Sink.

  18. Volte para o separador pipeline no topo. Pesquise por Web na caixa de pesquisa e arraste e solte uma atividade da Web na superfície do designer de pipeline. Defina o nome da atividade como SendSuccessEmailActivity. A Atividade Web permite uma chamada para qualquer ponto final REST. Para obter mais informações sobre a atividade, veja Atividade Web. Este pipeline utiliza uma Atividade Web para chamar o fluxo de trabalho de e-mail do Logic Apps.

    Mostra uma captura de tela demonstrando como arrastar e soltar a primeira atividade da Web.

  19. Mude para o separador Definições, a partir do separador Geral e siga os passos abaixo:

    1. Em URL, especifique o URL do fluxo de trabalho da aplicação lógica que envia a mensagem de e-mail de êxito.

    2. Selecione POST em Método.

    3. Clique na ligação + Adicionar cabeçalho, na secção Cabeçalhos.

    4. Adicione um cabeçalho Content-Type e defina-o como application/json.

    5. Especifique o JSON seguinte em Corpo.

      {
          "message": "@{activity('Copy1').output.dataWritten}",
          "dataFactoryName": "@{pipeline().DataFactory}",
          "pipelineName": "@{pipeline().Pipeline}",
          "receiver": "@pipeline().parameters.receiver"
      }
      

      O corpo do e-mail contém as seguintes propriedades:

      • Mensagem - Passagem do valor de @{activity('Copy1').output.dataWritten. Acede a uma propriedade da atividade de cópia anterior e transmite o valor de dataWritten. Para o caso de falha, passe a saída de erro em vez de @{activity('CopyBlobtoBlob').error.message.

      • Data Factory Name - Valor passado de @{pipeline().DataFactory}. Esta é uma variável do sistema, permitindo o acesso ao nome correspondente da fábrica de dados. Para obter uma lista de variáveis do sistema, veja o artigo Variáveis do Sistema.

      • Nome do pipeline - Valor de passagem de @{pipeline().Pipeline}. Também se trata de uma variável do sistema, que lhe permite aceder ao nome do pipeline correspondente.

      • Receptor - Valor de passagem de "@pipeline().parameters.receiver". acedendo aos parâmetros do pipeline.

        Mostra uma captura de tela das configurações da primeira atividade na Web.

  20. Ligue a atividade Copiar à atividade Web arrastando o botão verde da caixa de seleção ao lado da atividade Copiar e soltando-o sobre a atividade Web.

    Mostra uma captura de tela demonstrando como conectar a atividade Copiar com a primeira atividade da Web.

  21. Arraste e largue outra atividade Web da caixa de ferramentas de atividades para a superfície do designer do pipeline e defina o nome como SendFailureEmailActivity.

    Mostra uma captura de tela do nome da segunda atividade da Web.

  22. Mude para o separador Definições e siga os passos abaixo:

    1. Em URL, especifique o URL do fluxo de trabalho da aplicação lógica que envia a mensagem de e-mail de falha.

    2. Selecione POST em Método.

    3. Clique na ligação + Adicionar cabeçalho, na secção Cabeçalhos.

    4. Adicione um cabeçalho Content-Type e defina-o como application/json.

    5. Especifique o JSON seguinte em Corpo.

      {
          "message": "@{activity('Copy1').error.message}",
          "dataFactoryName": "@{pipeline().DataFactory}",
          "pipelineName": "@{pipeline().Pipeline}",
          "receiver": "@pipeline().parameters.receiver"
      }
      

      Mostra uma captura de tela das configurações para a segunda atividade da Web.

  23. Selecione o botão X vermelho no lado direito da atividade Copy no designer de pipeline e arraste e solte-o na atividade SendFailureEmailActivity que acabou de criar.

    Captura de ecrã que mostra como selecionar Erro na atividade Copiar no designer de pipeline.

  24. Para validar o pipeline, clique no botão Validar, na barra de ferramentas. Clique no botão para fechar a janela >>.

    Mostra uma imagem de ecrã do botão de validação do pipeline.

  25. Para publicar entidades (conjuntos de dados, pipelines, etc.) no serviço Data Factory, selecione Publicar Tudo. Aguarde até surgir a mensagem Publicação bem-sucedida.

    Mostra uma captura de tela do botão Publicar no portal do data factory.

Acionar a execução de um pipeline que seja bem-sucedida

  1. Para acionar uma execução de pipeline, clique em Acionar, na barra de ferramentas, e clique em Acionar Agora.

    Mostra uma captura de tela do botão Acionar Agora.

  2. Na janela Execução de Pipeline, realize os seguintes passos:

    1. Introduza adftutorial/adfv2branch/input no parâmetro sourceBlobContainer.

    2. Introduza adftutorial/adfv2branch/output no parâmetro sinkBlobContainer.

    3. Introduza um endereço de e-mail do recetor.

    4. Clique em Concluir

      Parâmetros de execução de pipeline

Monitorizar a execução bem-sucedida do pipeline

  1. Para monitorizar a execução do pipeline, mude para o separador Monitorizar, no lado esquerdo. Você vê a execução do pipeline que foi acionado manualmente por si. Utilize o botão Atualizar para atualizar a lista.

    Execução de pipeline bem-sucedida

  2. Para ver as execuções de atividades associadas a esta execução do pipeline, clique na primeira ligação na coluna Ações. Pode clicar em Pipelines, na parte superior, para regressar à vista anterior. Utilize o botão Atualizar para atualizar a lista.

    Captura de tela que mostra como exibir a lista de execuções de atividades.

Acionar uma execução de um pipeline que falha

  1. Mude para o separador Editar, no lado esquerdo.

  2. Para acionar uma execução de pipeline, clique em Acionar, na barra de ferramentas, e clique em Acionar Agora.

  3. Na janela Execução de Pipeline, realize os seguintes passos:

    1. Introduza adftutorial/dummy/input no parâmetro sourceBlobContainer. Confirme que a pasta fictícia não existe no contentor adftutorial.
    2. Introduza adftutorial/dummy/output para o parâmetro sinkBlobContainer.
    3. Introduza um endereço de e-mail do recetor.
    4. Clique em Concluir.

Monitorizar a execução falhada do pipeline

  1. Para monitorizar a execução do pipeline, mude para o separador Monitorizar, no lado esquerdo. Você vê a execução do pipeline que foi acionado manualmente por si. Utilize o botão Atualizar para atualizar a lista.

    Execução de pipeline com falha

  2. Clique na ligação Erro da execução do pipeline para ver detalhes do erro.

    Erro do pipeline

  3. Para ver as execuções de atividades associadas a esta execução do pipeline, clique na primeira ligação na coluna Ações. Utilize o botão Atualizar para atualizar a lista. Repare que a atividade Copy no pipeline falhou. A atividade Web conseguiu enviar com êxito o e-mail de falha ao recetor especificado.

    Execuções de atividades

  4. Clique na ligação Erro, na coluna Ações, para ver detalhes do erro.

    Erro da execução da atividade

Neste tutorial, executou os passos seguintes:

  • Criar uma fábrica de dados.
  • Criar um serviço associado de Armazenamento do Azure
  • Criar um conjunto de dados do Blob do Azure
  • Criar um pipeline que contém uma atividade de cópia e uma atividade web
  • Enviar saídas de atividades para atividades posteriores
  • Utilizar a passagem de parâmetros e as variáveis de sistema
  • Iniciar uma execução de pipeline
  • Monitorar o pipeline e as execuções de atividades

Agora, pode avançar para a secção Conceitos para obter mais informações sobre o Azure Data Factory.