Partager via


Copier des données et envoyer des notifications par e-mail en cas de réussite et d’échec

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Dans ce didacticiel, vous créez un pipeline Data Factory qui présente certaines des fonctionnalités de flux de contrôle. Ce pipeline est une simple copie depuis un conteneur Stockage Blob Azure vers un autre conteneur dans le même compte de stockage. Si l’activité de copie réussit, le pipeline envoie les détails de l’opération de copie réussie (par exemple, la quantité de données écrites) dans un e-mail d’avis de réussite. Si l’activité de copie échoue, le pipeline envoie les détails de l’échec de la copie (par exemple, le message d’erreur) dans un e-mail d’avis d’échec. Tout au long de ce didacticiel, vous allez apprendre à passer des paramètres.

Vue d’ensemble du scénario : Le diagramme montre le Stockage Blob Azure qui est la cible d’une copie, laquelle, en cas de réussite, envoie un e-mail avec des détails ou, en cas d’échec, envoie un e-mail avec les détails de l’erreur.

Dans ce tutoriel, vous allez effectuer les étapes suivantes :

  • Créer une fabrique de données.
  • Créer un service lié Stockage Azure
  • Créer un jeu de données d’objet blob Azure
  • Créer un pipeline contenant une activité de copie et une activité web
  • Envoyer les sorties des activités aux activités ultérieures
  • Utiliser des variables système et de passage de paramètres
  • Démarrer une exécution de pipeline
  • Surveiller les exécutions de pipeline et d’activité

Ce tutoriel utilise le portail Azure. Vous pouvez utiliser d’autres mécanismes pour interagir avec Azure Data Factory. Consultez « Guides de démarrage rapide » dans la table des matières.

Prérequis

  • Abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Compte Stockage Azure. Vous utilisez le stockage blob comme magasins de données source. Si vous n’avez pas de compte de stockage Azure, consultez l’article Créer un compte de stockage pour découvrir comment en créer un.
  • Azure SQL Database. Vous utilisez la base de données en tant que magasin de données récepteur. Si vous n’avez pas de base de données dans Azure SQL Database, consultez l’article Créer une base de données dans Azure SQL Database pour savoir comme en créer une.

Créer la table d’objets blob

  1. Lancez le Bloc-notes. Copiez le texte suivant et enregistrez-le comme fichier input.txt sur votre disque.

    John,Doe
    Jane,Doe
    
  2. Utilisez des outils tels que l’ Explorateur de stockage Azure pour effectuer les étapes suivantes :

    1. Créer le conteneur adfv2branch.
    2. Créer le dossier entrée dans le conteneur adfv2branch.
    3. Télécharger le fichier input.txt au conteneur.

Créer des points de terminaison de flux de travail d’e-mail

Pour déclencher l’envoi d’un e-mail depuis le pipeline, vous utilisez Azure Logic Apps pour définir le workflow. Pour plus d’informations sur la création d’un workflow d’application logique, consultez Créer un exemple de workflow d’application logique Consommation.

Flux de travail d’un e-mail d’avis de réussite

Créez un workflow d’application logique Consommation nommé CopySuccessEmail. Ajoutez le déclencheur de requête nommé Lors de la réception d’une requête HTTP, puis ajoutez l’action Office 365 Outlook nommée Envoyer un e-mail. Si vous y êtes invité, connectez-vous à votre compte Outlook d’Office 365.

Capture d’écran du flux de travail d’un e-mail d’avis de réussite.

Dans le déclencheur de requête, renseignez la zone Schéma JSON du corps de la demande à l’aide du code JSON suivant :

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

Le déclencheur de requête dans le concepteur de workflow doit ressembler à l’image suivante :

Montre une capture d’écran du concepteur de workflow avec le déclencheur de requête.

Pour l’action Envoyer un e-mail, personnalisez le mode de mise en forme de l’e-mail en utilisant les propriétés passées dans le schéma JSON du corps de la requête. Voici un exemple :

Montre une capture d’écran du concepteur de workflow avec l’action nommée Envoyer un e-mail.

Enregistrez le workflow. Prenez note de l’URL de votre requête HTTP Post pour votre flux de travail d’e-mail d’avis de réussite :

//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

Flux de travail d’un e-mail d’avis d’échec

Suivez les mêmes étapes pour créer un autre workflow d’application logique nommé CopyFailEmail. Dans le déclencheur de requête, la valeur du Schéma JSON du corps de la demande est identique. Modifiez la mise en forme de votre e-mail, notamment Subject, pour l’adapter à un avis d’échec. Voici un exemple :

Montre une capture d’écran du concepteur de workflow avec le workflow d’e-mail d’avis d’échec.

Enregistrez le workflow. Prenez note de l’URL de votre requête HTTP Post pour votre flux de travail d’e-mail d’avis d’échec :

//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

Vous devez maintenant avoir deux URL de flux de travail :

//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

Créer une fabrique de données

  1. Lancez le navigateur web Microsoft Edge ou Google Chrome. L’interface utilisateur de Data Factory n’est actuellement prise en charge que par les navigateurs web Microsoft Edge et Google Chrome.

  2. Développez le menu situé en haut à gauche et sélectionnez Créer une ressource. Puis sélectionnez >Intégration>Data Factory :

    Capture d’écran du bouton Créer une ressource dans le portail Azure.

    Capture d’écran de la sélection Data Factory dans le volet Nouveau.

  3. Dans la page Nouvelle fabrique de données, entrez ADFTutorialDataFactory comme nom.

    Page Nouvelle fabrique de données

    Le nom de la fabrique de données Azure doit être un nom global unique. Si l’erreur suivante s’affiche, changez le nom de la fabrique de données (par exemple, votrenomADFTutorialDataFactory), puis tentez de la recréer. Consultez l’article Data Factory - Règles d’affectation des noms pour savoir comment nommer les artefacts Data Factory.

    Le nom de fabrique de données « ADFTutorialDataFactory » n’est pas disponible.

  4. Sélectionnez l’abonnement Azure dans lequel vous voulez créer la fabrique de données.

  5. Pour le groupe de ressources, effectuez l’une des opérations suivantes :

  6. Sélectionnez V2 pour la version.

  7. Sélectionnez l’emplacement de la fabrique de données. Seuls les emplacements pris en charge sont affichés dans la liste déroulante. Les magasins de données (Stockage Azure, Azure SQL Database, etc.) et les services de calcul (HDInsight, etc.) utilisés par la fabrique de données peuvent être proposés dans d’autres régions.

  8. Sélectionnez Épingler au tableau de bord.

  9. Cliquez sur Créer.

  10. Une fois la création terminée, la page Data Factory s’affiche comme sur l’image.

    Capture d’écran de la page d’accueil de Data Factory.

  11. Cliquez sur la vignette Ouvrir Azure Data Factory Studio pour lancer l’interface utilisateur d’Azure Data Factory dans un onglet distinct.

Créer un pipeline

Dans cette étape, vous allez créer un pipeline avec une activité de copie et deux activités web. Vous utilisez les fonctionnalités suivantes pour créer le pipeline :

  • Paramètres du pipeline auxquels les jeux de données ont accès.
  • Activité Web pour appeler des flux de travail Logic Apps pour envoyer des messages de réussite/échec.
  • Connexion d’une activité à une autre activité (cas de réussite et échec)
  • Utilisation de la sortie d’une activité en tant qu’entrée de l’activité suivante
  1. Dans la page d’accueil de l’interface utilisateur Data Factory, cliquez sur la vignette Orchestrer.

    Capture d’écran de la page d’accueil de Data Factory avec la vignette Orchestrer en surbrillance.

  2. Dans la fenêtre Propriétés pour le pipeline, basculez vers l’onglet Paramètres et utilisez le bouton Nouveau pour ajouter les trois paramètres suivants de type chaîne : sourceBlobContainer, sinkBlobContainer et récepteur.

    • sourceBlobContainer - paramètre dans le pipeline consommé par le jeu de données d’objet blob source.
    • sinkBlobContainer - paramètre dans le pipeline consommé par le jeu de données d’objet blob récepteur
    • receiver - ce paramètre est utilisé par les deux activités Web dans le pipeline qui envoient des e-mails de réussite ou d’échec au récepteur dont l’adresse e-mail est spécifiée par ce paramètre.

    Capture d’écran du menu Nouveau pipeline.

  3. Dans la boîte à outils Activités, recherchez Copy, puis faites glisser et déposez l’activité Copy vers la surface du concepteur de pipeline.

    Capture d’écran montrant comment faire glisser et déposer l’activité Copy sur le concepteur de pipeline.

  4. Sélectionnez l’activité Copy que vous avez fait glisser sur la surface du concepteur de pipeline. Dans la fenêtre Propriétés pour l’activité de copie en bas, basculez vers l’onglet Source, puis cliquez sur + Nouveau. Vous créez un jeu de données source pour l’activité de copie dans cette étape.

    Capture d’écran montrant comment créer un jeu de données source pour l’activité Copy.

  5. Dans la fenêtre Nouveau jeu de données, sélectionnez l’onglet Azure en haut, puis choisissez Stockage Blob Azure et sélectionnez Continuer.

    Capture d’écran du bouton Stockage Blob Azure.

  6. Dans la fenêtre Sélectionner le format, choisissez DelimitedText et sélectionnez Continuer.

    Capture d’écran de la fenêtre Sélectionner le format avec le format DelimitedText en surbrillance.

  7. Vous voyez un nouvel onglet intitulé Définir les propriétés. Modifiez le nom du jeu de données à SourceBlobDataset. Sélectionnez la liste déroulante Service lié et choisissez +Nouveau pour créer un service lié à votre jeu de données source.

    Capture d’écran de la fenêtre Définir les propriétés du jeu de données, avec le bouton + Nouveau en surbrillance sous la liste déroulante Service lié.**

  8. La fenêtre Nouveau service lié qui apparaît vous permet de renseigner les propriétés requises pour le service lié.

    Capture d’écran de la fenêtre de connexion du jeu de données avec le bouton Nouveau service lié en surbrillance.

  9. Dans la fenêtre Nouveau service lié, procédez comme suit :

    1. Entrez AzureStorageLinkedService pour Nom.
    2. Sélectionnez votre compte de stockage Azure pour le Nom du compte de stockage.
    3. Cliquez sur Créer.
  10. Dans la fenêtre Définir les propriétés qui apparaît ensuite, sélectionnez Ouvrir ce jeu de données afin d’entrer une valeur paramétrisée pour le nom de fichier.

    Capture d’écran de la fenêtre Définir les propriétés du jeu de données avec le lien Ouvrir ce jeu de données en surbrillance.

  11. Saisissez @pipeline().parameters.sourceBlobContainer pour le dossier et emp.txt pour le nom du fichier.

    Capture d’écran des paramètres du jeu de données source.

  12. Revenez à l’onglet pipeline (ou cliquez sur le pipeline dans l’arborescence de gauche), puis sélectionnez l’activité Copy sur le concepteur. Vérifiez que votre nouveau jeu de données est sélectionné comme jeu de données source.

    Capture d’écran du jeu de données source.

  13. Dans la fenêtre Propriétés, basculez vers l’onglet Récepteur, puis cliquez sur + Nouveau pour Jeu de données récepteur. Vous créez un jeu de données récepteur pour l’activité de copie dans cette étape d’une façon similaire à la création du jeu de données source.

    Capture d’écran du bouton Nouveau jeu de données récepteur

  14. Dans la fenêtre Nouveau jeu de données, sélectionnez Stockage Blob Azure, cliquez sur Continuer, sélectionnez à nouveau DelimitedText dans la fenêtre Sélectionner le format, puis cliquez à nouveau sur Continuer.

  15. Sur la page Définir les propriétés du jeu de données, entrez SinkBlobDataset pour la propriété Name, puis sélectionnez AzureStorageLinkedService pour LinkedService.

  16. Développez la section Avancé de la page de propriétés et sélectionnez Ouvrir ce jeu de données.

  17. Sous l’onglet Connexion du jeu de données, modifiez le Chemin d’accès au fichier. Saisissez @pipeline().parameters.sinkBlobContainer pour le dossier et @concat(pipeline().RunId, '.txt') pour le nom du fichier. L’expression utilise l’ID de l’exécution de pipeline actuelle comme nom de fichier. Pour obtenir la liste des variables système et expressions prises en charge, consultez Variables système et Langage d’expression.

    Capture d’écran des paramètres du jeu de données de récepteur.

  18. Revenez à l’onglet Pipeline, en haut. Entrez Web dans la zone de recherche, et faites glisser et déposez une activité Web vers la surface du concepteur de pipeline. Définissez le nom de l’activité sur SendSuccessEmailActivity. L’activité web permet d’appeler n’importe quel point de terminaison REST. Pour plus d’informations sur l’activité, consultez Activité web. Ce pipeline utilise une activité web pour appeler le flux de travail d’un e-mail Logic Apps.

    Capture d’écran montrant comment faire glisser et déposer la première activité Web.

  19. Basculez vers l’onglet Paramètres à partir de l’onglet Général, et procédez comme suit :

    1. Pour l’URL, spécifiez l’URL du flux de travail Logic Apps qui envoie l’e-mail de réussite.

    2. Sélectionnez POST comme méthode.

    3. Cliquez sur le lien + Ajouter un en-tête dans la section En-têtes.

    4. Ajoutez un en-tête Content-Type et affectez-lui la valeur application/json.

    5. Spécifiez le texte JSON suivant pour le corps.

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

      Le corps du message contient les propriétés suivantes :

      • Message - Passage de la valeur @{activity('Copy1').output.dataWritten. Accède à une propriété de l’activité de copie précédente et passe la valeur de dataWritten. Pour un échec, passez la sortie de l’erreur au lieu de @{activity('CopyBlobtoBlob').error.message.

      • Nom de Data Factory - Passage de la valeur @{pipeline().DataFactory}. Il s’agit d’une variable système, qui vous permet d’accéder au nom de la fabrique de données correspondante. Consultez l’article Variables système pour obtenir la liste des variables système.

      • Nom du pipeline : Passage de la valeur @{pipeline().Pipeline}. Il s’agit également d’une variable système, qui vous permet d’accéder au nom du pipeline correspondant.

      • Récepteur - Passage de la valeur "pipeline().parameters.receiver"). Accès aux paramètres de pipeline.

        Capture d’écran des paramètres de la première activité Web.

  20. Connectez l’activité Copy à l’activité Web en faisant glisser le bouton de la case à cocher verte située en regard de l’activité Copy vers l’activité Web.

    Capture d’écran montrant comment connecter l’activité Copy à la première activité Web.

  21. Faites glisser une autre activité Web à partir de la boîte à outils Activités vers la zone du concepteur de pipeline et configurez le nom comme SendFailureEmailActivity.

    Capture d’écran du nom de la deuxième activité Web.

  22. Basculez vers l’onglet Paramètres, et procédez comme suit :

    1. Pour l’URL, spécifiez l’URL du flux de travail Logic Apps qui envoie l’e-mail d’échec.

    2. Sélectionnez POST comme méthode.

    3. Cliquez sur le lien + Ajouter un en-tête dans la section En-têtes.

    4. Ajoutez un en-tête Content-Type et affectez-lui la valeur application/json.

    5. Spécifiez le texte JSON suivant pour le corps.

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

      Capture d’écran des paramètres de la deuxième activité Web.

  23. Sélectionnez le bouton X rouge à droite de l’activité Copy dans le concepteur de pipeline, puis faites-le glisser et déposez-le sur l’activité sendFailureEmailActivity que vous venez de créer.

    Capture d’écran montrant comment sélectionner une erreur sur l’activité de copie dans le concepteur de pipeline.

  24. Pour valider le pipeline, cliquez sur le bouton Valider dans la barre d’outils. Fermez la fenêtre Sortie de validation du pipeline en cliquant sur le bouton >>.

    Capture d’écran du bouton Valider le pipeline.

  25. Pour publier les entités (jeux de données, pipelines, etc.) sur Data Factory, cliquez sur Publish All (Publier tout). Patientez jusqu’à voir le message Publication réussie.

    Capture d’écran du bouton Publier sur le portail Data Factory.

Déclencher une exécution de pipeline qui réussit

  1. Pour déclencher une exécution de pipeline, cliquez sur Déclencher dans la barre d’outils, puis sur Déclencher maintenant.

    Capture d’écran du bouton Déclencher maintenant.

  2. Dans la fenêtre Exécution de pipeline, procédez comme suit :

    1. Entrez adftutorial/adfv2branch/input pour le paramètre sourceBlobContainer.

    2. Entrez adftutorial/adfv2branch/output pour le paramètre sinkBlobContainer.

    3. Entrez une adresse e-mail du récepteur.

    4. Cliquez sur Terminer

      Paramètres de l’exécution de pipeline

Surveiller l’exécution de pipeline réussie

  1. Pour surveiller l’exécution de pipeline, basculez vers l’onglet Surveiller sur la gauche. Vous voyez l’exécution de pipeline que vous avez déclenchée manuellement. Utilisez le bouton Actualiser pour actualiser la liste.

    Exécution de pipeline réussie

  2. Pour voir les exécutions d’activité associées à l’exécution de ce pipeline, cliquez sur le premier lien dans la colonne Actions. Vous pouvez revenir à la vue précédente en cliquant sur Pipelines en haut. Utilisez le bouton Actualiser pour actualiser la liste.

    Capture d’écran montrant comment afficher la liste des exécutions d’activités.

Déclencher une exécution de pipeline qui échoue

  1. Basculez vers l’onglet Modifier sur la gauche.

  2. Pour déclencher une exécution de pipeline, cliquez sur Déclencher dans la barre d’outils, puis sur Déclencher maintenant.

  3. Dans la fenêtre Exécution de pipeline, procédez comme suit :

    1. Entrez adftutorial/dummy/input pour le paramètre sourceBlobContainer. Assurez-vous que le dossier factice n’existe pas dans le conteneur adftutorial.
    2. Entrez adftutorial/dummy/output pour le paramètre sinkBlobContainer.
    3. Entrez une adresse e-mail du récepteur.
    4. Cliquez sur Terminer.

Surveiller l’exécution du pipeline qui a échoué

  1. Pour surveiller l’exécution de pipeline, basculez vers l’onglet Surveiller sur la gauche. Vous voyez l’exécution de pipeline que vous avez déclenchée manuellement. Utilisez le bouton Actualiser pour actualiser la liste.

    Exécution de pipeline qui a échoué

  2. Cliquez sur le lien Erreur pour l’exécution de pipeline afin d’afficher des détails sur l’erreur de pipeline.

    Erreur de pipeline

  3. Pour voir les exécutions d’activité associées à l’exécution de ce pipeline, cliquez sur le premier lien dans la colonne Actions. Utilisez le bouton Actualiser pour actualiser la liste. Notez que l’activité de copie dans le pipeline a échoué. L’activité Web a réussi à envoyer l’e-mail d’échec au destinataire spécifié.

    Exécutions d’activités

  4. Cliquez sur le lien Erreur dans la colonne Actions afin d’afficher des détails sur l’erreur.

    Erreur d’exécution d’activité

Dans ce tutoriel, vous avez effectué les étapes suivantes :

  • Créer une fabrique de données.
  • Créer un service lié Stockage Azure
  • Créer un jeu de données d’objet blob Azure
  • Créer un pipeline qui contient une activité de copie et une activité web
  • Envoyer les sorties des activités aux activités ultérieures
  • Utiliser des variables système et de passage de paramètres
  • Démarrer une exécution de pipeline
  • Surveiller les exécutions de pipeline et d’activité

Vous pouvez maintenant passer à la section Concepts pour plus d’informations sur Azure Data Factory.