Démarrage rapide : Créer une fabrique de données Azure avec PowerShell

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 !

Ce guide de démarrage rapide explique comment utiliser PowerShell pour créer une fabrique de données Azure. Le pipeline que vous créez dans cette fabrique de données copie les données d’un dossier vers un autre dossier dans un stockage Blob Azure. Pour suivre un tutoriel sur la transformation des données à l’aide d’Azure Data Factory, consultez Tutoriel : Transformer des données à l’aide de Spark.

Notes

Cet article ne fournit pas de présentation détaillée du service Data Factory. Pour une présentation du service Azure Data Factory, consultez Présentation d’Azure Data Factory.

Prérequis

Abonnement Azure

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Rôles Azure

Pour créer des instances Data Factory, le compte d’utilisateur que vous utilisez pour vous connecter à Azure doit être membre des rôles Contributeur ou Propriétaire, ou administrateur de l’abonnement Azure. Pour voir les autorisations dont vous disposez dans l’abonnement, accédez au portail Azure, sélectionnez votre nom d’utilisateur en haut à droite, sélectionnez l’icône « ... » pour plus d’options, puis sélectionnez Mes autorisations. Si vous avez accès à plusieurs abonnements, sélectionnez l’abonnement approprié.

Les exigences applicables à la création et à la gestion des ressources enfants pour Data Factory (jeux de données, services liés, pipelines, déclencheurs et runtimes d’intégration) sont les suivantes :

  • Pour créer et gérer des ressources enfants dans le Portail Azure, vous devez appartenir au rôle Contributeurs de Data Factory au niveau du groupe de ressources ou à un niveau supérieur.
  • Pour créer et gérer des ressources enfants à l’aide de PowerShell ou du Kit de développement logiciel (SDK), le rôle Contributeur au niveau du groupe de ressources ou à un niveau supérieur est suffisant.

Pour découvrir des exemples d’instructions concernant l’ajout d’un utilisateur à un rôle, consultez l’article décrivant comment ajouter des rôles.

Pour plus d’informations, consultez les articles suivants :

Compte de Stockage Azure

Dans ce guide de démarrage rapide, vous utilisez un compte de Stockage Azure (plus précisément, un compte de Stockage Blob) à usage général à la fois comme magasins de données source et de destination. Si vous ne possédez pas de compte de Stockage Azure à usage général, consultez Créer un compte de stockage pour en créer un.

Obtenir le nom du compte de stockage

Pour ce guide de démarrage rapide, vous avez besoin du nom de votre compte de Stockage Azure. La procédure suivante détaille les étapes à suivre pour obtenir le nom de votre compte de stockage :

  1. Dans un navigateur web, accédez au portail Azure et connectez-vous à l’aide de vos nom d’utilisateur et mot de passe Azure.
  2. Dans le menu Portail Azure, sélectionnez Tous les services, puis sélectionnez Stockage>Comptes de stockage. Vous pouvez également rechercher et sélectionner Comptes de stockage à partir de n’importe quelle page.
  3. Dans la page Comptes de stockage, appliquez un filtre pour votre compte de stockage (si nécessaire), puis sélectionnez votre compte de stockage.

Vous pouvez également rechercher et sélectionner Comptes de stockage à partir de n’importe quelle page.

Création d’un conteneur d’objets blob

Dans cette section, vous allez créer un conteneur d’objets blob nommé adftutorial dans un stockage Blob Azure.

  1. Dans la page du compte de stockage, sélectionnez Présentation>Conteneurs.

  2. Dans la barre d’outils de la page <Nom du compte> - Conteneurs, sélectionnez Conteneur.

  3. Dans la boîte de dialogue Nouveau conteneur, saisissez le nom adftutorial, puis sélectionnez OK. La page <Nom du compte> - Conteneurs est mise à jour pour inclure adftutorial dans la liste des conteneurs.

    List of containers

Ajouter un dossier et un fichier d’entrée pour le conteneur d’objets blob

Dans cette section, vous créez un dossier nommé input (entrée) dans le conteneur que vous avez créé, puis chargez un exemple de fichier dans ce dossier. Avant de commencer, ouvrez un éditeur de texte tel que Bloc-notes, puis créez un fichier nommé emp.txt avec le contenu suivant :

John, Doe
Jane, Doe

Enregistrez-le dans le dossier C:\ADFv2QuickStartPSH (si le dossier n’existe pas, créez-le). Revenez ensuite au portail Azure et procédez comme suit :

  1. Dans la page <Nom du compte> - Conteneurs, là où vous vous êtes arrêté, sélectionnez adftutorial dans la liste mise à jour des conteneurs.

    1. Si vous avez fermé la fenêtre ou accédé à une autre page, connectez-vous au Portail Azure à nouveau.
    2. Dans le menu Portail Azure, sélectionnez Tous les services, puis sélectionnez Stockage>Comptes de stockage. Vous pouvez également rechercher et sélectionner Comptes de stockage à partir de n’importe quelle page.
    3. Sélectionnez votre compte de stockage, puis sélectionnez Conteneurs>adftutorial.
  2. Dans la barre d’outils de la page du conteneur adftutorial, sélectionnez Charger.

  3. Dans la page Charger l’objet blob, sélectionnez la zone Fichiers, puis recherchez et sélectionnez le fichier emp.txt.

  4. Développez le titre Avancé. La page s’affiche à présent comme indiqué :

    Select Advanced link

  5. Dans la zone Charger dans le dossier, entrez input.

  6. Cliquez sur le bouton Charger. Vous devriez voir le fichier emp.txt et l’état du chargement dans la liste.

  7. Sélectionnez l’icône Fermer (X) pour fermer la page Charger l’objet blob.

Laissez la page du conteneur adftutorial ouverte. Vous l’utiliserez pour vérifier la sortie à la fin de ce guide de démarrage rapide.

Azure PowerShell

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Installez les modules Azure PowerShell les plus récents en suivant les instructions décrites dans Comment installer et configurer Azure PowerShell.

Avertissement

Si vous n’utilisez pas les dernières versions des modules PowerShell et Data Factory, vous risquez de rencontrer des erreurs de désérialisation lors de l’exécution des commandes.

Se connecter à PowerShell

  1. Lancez PowerShell sur votre ordinateur. Gardez PowerShell ouvert jusqu’à la fin de ce guide de démarrage rapide. Si vous la fermez, puis la rouvrez, vous devez réexécuter ces commandes.

  2. Exécutez la commande suivante, puis saisissez le nom d’utilisateur et le mot de passe Azure que vous utilisez pour vous connecter au portail Azure :

    Connect-AzAccount
    
  3. Exécutez la commande suivante pour afficher tous les abonnements de ce compte :

    Get-AzSubscription
    
  4. Si plusieurs abonnements sont associés à votre compte, exécutez la commande suivante pour sélectionner l’abonnement avec lequel vous souhaitez travailler. Remplacez SubscriptionId par l’ID de votre abonnement Azure :

    Select-AzSubscription -SubscriptionId "<SubscriptionId>"
    

Créer une fabrique de données

  1. Définissez une variable pour le nom du groupe de ressources que vous utiliserez ultérieurement dans les commandes PowerShell. Copiez le texte de commande suivant dans PowerShell, spécifiez un nom pour le groupe de ressources Azure entre des guillemets doubles, puis exécutez la commande. Par exemple : "ADFQuickStartRG".

    $resourceGroupName = "ADFQuickStartRG";
    

    Si le groupe de ressources existe déjà, vous pouvez ne pas le remplacer. Affectez une valeur différente à la variable $ResourceGroupName et exécutez à nouveau la commande

  2. Pour créer le groupe de ressources Azure, exécutez la commande suivante :

    $ResGrp = New-AzResourceGroup $resourceGroupName -location 'East US'
    

    Si le groupe de ressources existe déjà, vous pouvez ne pas le remplacer. Affectez une valeur différente à la variable $ResourceGroupName et exécutez à nouveau la commande.

  3. Définissez une variable pour le nom de la fabrique de données.

    Important

    Mettez à jour le nom de la fabrique de données afin qu’il soit globalement unique. Par exemple, ADFTutorialFactorySP1127.

    $dataFactoryName = "ADFQuickStartFactory";
    
  4. Pour créer la fabrique de données, exécutez l’applet de commande suivante Set-AzDataFactoryV2, à l’aide des propriétés Location et ResourceGroupName à partir de la variable $ResGrp :

    $DataFactory = Set-AzDataFactoryV2 -ResourceGroupName $ResGrp.ResourceGroupName `
        -Location $ResGrp.Location -Name $dataFactoryName
    

Notez les points suivants :

  • Le nom de la fabrique de données Azure doit être un nom global unique. Si vous recevez l’erreur suivante, changez le nom, puis réessayez.

    The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.
    
  • Pour créer des instances de fabrique de données, le compte d’utilisateur que vous utilisez pour vous connecter à Azure doit être un membre des rôles contributeur ou propriétaire, ou un administrateur de l’abonnement Azure.

  • Pour obtenir la liste des régions Azure dans lesquelles Data Factory est actuellement disponible, sélectionnez les régions qui vous intéressent dans la page suivante, puis développez Analytique pour localiser Data Factory : Disponibilité des produits par région. 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.

Créer un service lié

Créez des services liés dans une fabrique de données pour lier vos magasins de données et vos services de calcul à la fabrique de données. Dans ce guide de démarrage rapide, vous allez créer un service lié Stockage Azure qui sera utilisé à la fois comme banque de données source et réceptrice. Le service lié comporte les informations de connexion utilisées par le service Data Factory lors de l’exécution pour s’y connecter.

Conseil

Dans ce guide de démarrage rapide, vous utilisez une clé de compte comme type d’authentification pour votre magasin de données, mais vous pouvez choisir d’autres méthodes d’authentification prises en charge : un URI SAS, un principal de service et une identité managée, si nécessaire. Pour plus d’informations, reportez-vous aux sections correspondantes de cet article. Pour stocker de manière sécurisée des secrets de magasins de données, il est également recommandé d’utiliser un coffre de clés Azure. Pour obtenir des illustrations détaillées, reportez-vous à cet article.

  1. Créez un fichier JSON nommé AzureStorageLinkedService.json dans le dossier C:\ADFv2QuickStartPSH avec le contenu suivant : (S’il n’existe pas déjà, créez le dossier ADFv2QuickStartPSH.)

    Important

    Remplacez <accountName> et <accountKey> par le nom et la clé de votre compte de stockage Azure avant d’enregistrer le fichier.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "annotations": [],
            "type": "AzureBlobStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.windows.net"
            }
        }
    }
    

    Si vous utilisez Notepad, sélectionnez Tous les fichiers comme Type d’enregistrement sous renseigné dans la boîte de dialogue Enregistrer sous. Sinon, l’extension .txt pourrait être ajoutée au fichier. Par exemple : AzureStorageLinkedService.json.txt. Si vous créez le fichier dans l’Explorateur de fichiers avant de l’ouvrir dans Notepad, il se peut que l’extension .txt ne s’affiche pas car l’option Masquer les extensions des types de fichiers connus est définie par défaut. Supprimez l’extension .txt avant de passer à l’étape suivante.

  2. Dans PowerShell, basculez vers le dossier ADFv2QuickStartPSH.

    Set-Location 'C:\ADFv2QuickStartPSH'
    
  3. Exécutez la cmdlet Set-AzDataFactoryV2LinkedService pour créer le service lié : AzureStorageLinkedService.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "AzureStorageLinkedService" `
        -DefinitionFile ".\AzureStorageLinkedService.json"
    

    Voici l'exemple de sortie :

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : <resourceGroupName>
    DataFactoryName   : <dataFactoryName>
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobStorageLinkedService
    

Créez les jeux de données

Dans cette procédure, vous créez deux jeux de données : InputDataset et OutputDataset. Ces jeux de données sont de type Binaire. Ils font référence au service lié Stockage Azure que vous avez créé dans la section précédente. Le jeu de données d’entrée représente les données sources dans le dossier d’entrée. Dans la définition du jeu de données d’entrée, vous spécifiez le conteneur d’objets Blob (adftutorial), le dossier (input) et le fichier (emp.txt) qui contient la source de données. Le jeu de données de sortie représente les données qui sont copiées vers la destination. Dans la définition du jeu de données de sortie, vous spécifiez le conteneur d’objets Blob (adftutorial), le dossier (output) et le fichier dans lequel les données sont copiées.

  1. Créez un fichier JSON nommé InputDataset.json dans le dossier C:\ADFv2QuickStartPSH avec le contenu suivant :

    {
        "name": "InputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "fileName": "emp.txt",
                    "folderPath": "input",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  2. Pour créer le jeu de données : InputDataset, exécutez l’applet de commande Set-AzDataFactoryV2Dataset.

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "InputDataset" `
        -DefinitionFile ".\InputDataset.json"
    

    Voici l'exemple de sortie :

    DatasetName       : InputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    
  3. Répétez les étapes pour créer le jeu de données de sortie. Créez un fichier JSON nommé OutputDataset.json dans le dossier C:\ADFv2QuickStartPSH avec le contenu suivant :

    {
        "name": "OutputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "folderPath": "output",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  4. Exécutez l’applet de commande Set-AzDataFactoryV2Dataset pour créer OutDataset.

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "OutputDataset" `
        -DefinitionFile ".\OutputDataset.json"
    

    Voici l'exemple de sortie :

    DatasetName       : OutputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    

Créer un pipeline

Dans cette procédure, vous allez créer un pipeline avec une activité de copie qui utilise les jeux de données d’entrée et de sortie. L’activité de copie copie les données du fichier que vous avez spécifié dans les paramètres du jeu de données d’entrée dans le fichier que vous avez spécifié dans les paramètres du jeu de données de sortie.

  1. Créez un fichier JSON nommé Adfv2QuickStartPipeline.json dans le dossier C:\ADFv2QuickStartPSH avec le contenu suivant :

    {
        "name": "Adfv2QuickStartPipeline",
        "properties": {
            "activities": [
                {
                    "name": "CopyFromBlobToBlob",
                    "type": "Copy",
                    "dependsOn": [],
                    "policy": {
                        "timeout": "7.00:00:00",
                        "retry": 0,
                        "retryIntervalInSeconds": 30,
                        "secureOutput": false,
                        "secureInput": false
                    },
                    "userProperties": [],
                    "typeProperties": {
                        "source": {
                            "type": "BinarySource",
                            "storeSettings": {
                                "type": "AzureBlobStorageReadSettings",
                                "recursive": true
                            }
                        },
                        "sink": {
                            "type": "BinarySink",
                            "storeSettings": {
                                "type": "AzureBlobStorageWriteSettings"
                            }
                        },
                        "enableStaging": false
                    },
                    "inputs": [
                        {
                            "referenceName": "InputDataset",
                            "type": "DatasetReference"
                        }
                    ],
                    "outputs": [
                        {
                            "referenceName": "OutputDataset",
                            "type": "DatasetReference"
                        }
                    ]
                }
            ],
            "annotations": []
        }
    }
    
  2. Pour créer le pipeline : Adfv2QuickStartPipeline, exécutez la cmdlet Set-AzDataFactoryV2Pipeline.

    $DFPipeLine = Set-AzDataFactoryV2Pipeline `
        -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName `
        -Name "Adfv2QuickStartPipeline" `
        -DefinitionFile ".\Adfv2QuickStartPipeline.json"
    

Créer une exécution du pipeline

Dans cette étape, vous allez créer une exécution du pipeline.

Exécutez l’applet de commande Invoke-AzDataFactoryV2Pipeline pour créer une exécution du pipeline. L’applet de commande renvoie l’ID d’exécution du pipeline pour permettre une surveillance ultérieure.

$RunId = Invoke-AzDataFactoryV2Pipeline `
  -DataFactoryName $DataFactory.DataFactoryName `
  -ResourceGroupName $ResGrp.ResourceGroupName `
  -PipelineName $DFPipeLine.Name 

Surveiller l’exécution du pipeline.

  1. Exécutez le script PowerShell suivant afin de vérifier continuellement l’état de l’exécution du pipeline jusqu’à la fin de la copie des données. Copiez/collez le script suivant dans la fenêtre PowerShell et appuyez sur ENTRÉE.

    while ($True) {
        $Run = Get-AzDataFactoryV2PipelineRun `
            -ResourceGroupName $ResGrp.ResourceGroupName `
            -DataFactoryName $DataFactory.DataFactoryName `
            -PipelineRunId $RunId
    
        if ($Run) {
            if ( ($Run.Status -ne "InProgress") -and ($Run.Status -ne "Queued") ) {
                Write-Output ("Pipeline run finished. The status is: " +  $Run.Status)
                $Run
                break
            }
            Write-Output ("Pipeline is running...status: " + $Run.Status)
        }
    
        Start-Sleep -Seconds 10
    }
    

    Voici l’exemple de sortie de l’exécution du pipeline :

    Pipeline is running...status: InProgress
    Pipeline run finished. The status is:  Succeeded
    
    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    RunId             : 00000000-0000-0000-0000-0000000000000
    PipelineName      : Adfv2QuickStartPipeline
    LastUpdated       : 8/27/2019 7:23:07 AM
    Parameters        : {}
    RunStart          : 8/27/2019 7:22:56 AM
    RunEnd            : 8/27/2019 7:23:07 AM
    DurationInMs      : 11324
    Status            : Succeeded
    Message           : 
    
  2. Exécutez le script suivant pour récupérer les détails de l’exécution de l’activité de copie, par exemple la taille des données lues/écrites.

    Write-Output "Activity run details:"
    $Result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $DataFactory.DataFactoryName -ResourceGroupName $ResGrp.ResourceGroupName -PipelineRunId $RunId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
    $Result
    
    Write-Output "Activity 'Output' section:"
    $Result.Output -join "`r`n"
    
    Write-Output "Activity 'Error' section:"
    $Result.Error -join "`r`n"
    
  3. Vérifiez que la sortie est similaire à l’exemple de sortie suivant pour le résultat de l’exécution de l’activité :

    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    ActivityRunId     : 00000000-0000-0000-0000-000000000000
    ActivityName      : CopyFromBlobToBlob
    PipelineRunId     : 00000000-0000-0000-0000-000000000000
    PipelineName      : Adfv2QuickStartPipeline
    Input             : {source, sink, enableStaging}
    Output            : {dataRead, dataWritten, filesRead, filesWritten...}
    LinkedServiceName :
    ActivityRunStart  : 8/27/2019 7:22:58 AM
    ActivityRunEnd    : 8/27/2019 7:23:05 AM
    DurationInMs      : 6828
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    Activity 'Output' section:
    "dataRead": 20
    "dataWritten": 20
    "filesRead": 1
    "filesWritten": 1
    "sourcePeakConnections": 1
    "sinkPeakConnections": 1
    "copyDuration": 4
    "throughput": 0.01
    "errors": []
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (Central US)"
    "usedDataIntegrationUnits": 4
    "usedParallelCopies": 1
    "executionDetails": [
      {
        "source": {
          "type": "AzureBlobStorage"
        },
        "sink": {
          "type": "AzureBlobStorage"
        },
        "status": "Succeeded",
        "start": "2019-08-27T07:22:59.1045645Z",
        "duration": 4,
        "usedDataIntegrationUnits": 4,
        "usedParallelCopies": 1,
        "detailedDurations": {
          "queuingDuration": 3,
          "transferDuration": 1
        }
      }
    ]
    
    Activity 'Error' section:
    "errorCode": ""
    "message": ""
    "failureType": ""
    "target": "CopyFromBlobToBlob"
    

Vérifier les ressources déployées

Le pipeline crée automatiquement le dossier de sortie dans le conteneur d’objets blob adftutorial. Ensuite, il copie le fichier emp.txt à partir du dossier d’entrée dans le dossier de sortie.

  1. Dans le portail Azure, dans la page du conteneur adftutorial, sélectionnez Actualiser pour voir le dossier de sortie.

    Screenshot shows the container page where you can refresh the page.

  2. Dans la liste des dossiers, sélectionnez output.

  3. Vérifiez que le fichier emp.txt a été copié dans le dossier de sortie.

    Screenshot shows the output folder contents.

Nettoyer les ressources

Vous disposez de deux moyens de supprimer les ressources que vous avez créées dans le guide de démarrage rapide. Vous pouvez supprimer le groupe de ressources Azure qui inclut toutes les ressources du groupe de ressources. Si vous souhaitez conserver les autres ressources, supprimez uniquement la fabrique de données créée dans ce tutoriel.

Si vous supprimez un groupe de ressources, toutes les ressources qu’il contient, y compris les fabriques de données, seront supprimées. Exécutez la commande suivante pour supprimer l’intégralité du groupe de ressources :

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Notes

La suppression d’un groupe de ressources peut prendre un certain temps. Veuillez patienter pendant ce processus.

Si vous souhaitez supprimer uniquement la fabrique de données, et non pas l’intégralité du groupe de ressources, exécutez la commande suivante :

Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName

Dans cet exemple, le pipeline copie les données d’un emplacement vers un autre dans un stockage Blob Azure. Consultez les didacticiels pour en savoir plus sur l’utilisation de Data Factory dans d’autres scénarios.