Déplacer des données depuis un serveur SFTP à l’aide d’Azure Data FactoryMove data from an SFTP server using Azure Data Factory

Notes

Cet article s’applique à la version 1 de Data Factory.This article applies to version 1 of Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Connecteur SFTP dans V2.If you are using the current version of the Data Factory service, see SFTPconnector in V2.

Cet article explique comment utiliser l'activité de copie d’Azure Data Factory pour déplacer des données d’un serveur SFTP local/cloud vers un magasin de données récepteur pris en charge.This article outlines how to use the Copy Activity in Azure Data Factory to move data from an on-premises/cloud SFTP server to a supported sink data store. Cet article s’appuie sur l’article des activités de déplacement des données qui présente une vue d’ensemble du déplacement des données avec l’activité de copie et la liste de magasins de données pris en charge comme sources/récepteurs.This article builds on the data movement activities article that presents a general overview of data movement with copy activity and the list of data stores supported as sources/sinks.

Actuellement, Data Factory prend uniquement en charge le déplacement de données d’un serveur SFTP vers d’autres magasins de données, mais pas l’inverse.Data factory currently supports only moving data from an SFTP server to other data stores, but not for moving data from other data stores to an SFTP server. Il prend en charge à la fois les serveurs SFTP locaux et cloud.It supports both on-premises and cloud SFTP servers.

Notes

L’activité de copie ne supprime pas le fichier source une fois qu’il est copié sur la destination.Copy Activity does not delete the source file after it is successfully copied to the destination. Si vous devez supprimer le fichier source une fois qu’il est copié, créez une activité personnalisée pour supprimer le fichier et utilisez l’activité dans le pipeline.If you need to delete the source file after a successful copy, create a custom activity to delete the file and use the activity in the pipeline.

Scénarios et types d’authentification pris en chargeSupported scenarios and authentication types

Vous pouvez utiliser ce connecteur SFTP pour copier des données des serveurs SFTP cloud et locaux.You can use this SFTP connector to copy data from both cloud SFTP servers and on-premises SFTP servers. Les types d’authentification De base et SshPublicKey sont pris en charge lors de la connexion au serveur SFTP.Basic and SshPublicKey authentication types are supported when connecting to the SFTP server.

Pour copier des données à partir d’un serveur SFTP local, vous devez installer une passerelle de gestion des données dans l’environnement local/sur la machine virtuelle Azure.When copying data from an on-premises SFTP server, you need install a Data Management Gateway in the on-premises environment/Azure VM. Consultez Passerelle de gestion des données pour plus d’informations sur la passerelle.See Data Management Gateway for details on the gateway. Consultez l’article Déplacement de données entre des emplacements locaux et le cloud pour obtenir des instructions détaillées sur la configuration de la passerelle et son utilisation.See moving data between on-premises locations and cloud article for step-by-step instructions on setting up the gateway and using it.

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données d’une source SFTP à l’aide de différents outils/API.You can create a pipeline with a copy activity that moves data from an SFTP source by using different tools/APIs.

Propriétés du service liéLinked service properties

Le tableau suivant fournit la description des éléments JSON spécifiques du service lié FTP.The following table provides description for JSON elements specific to FTP linked service.

PropriétéProperty DescriptionDescription ObligatoireRequired
Typetype La propriété de type doit être définie sur Sftp.The type property must be set to Sftp. OUIYes
hosthost Nom ou adresse IP du serveur SFTP.Name or IP address of the SFTP server. OUIYes
portport Port sur lequel le serveur SFTP écoute.Port on which the SFTP server is listening. La valeur par défaut est : 21The default value is: 21 NonNo
authenticationTypeauthenticationType Spécification du type d’authentification.Specify authentication type. Valeurs autorisées : Basic, SshPublicKey.Allowed values: Basic, SshPublicKey.

Reportez-vous aux sections Utilisation de l’authentification par clé publique SSH et Utilisation de l’authentification par clé publique SSH portant respectivement sur des propriétés supplémentaires et des exemples JSON.Refer to Using basic authentication and Using SSH public key authentication sections on more properties and JSON samples respectively.
OUIYes
skipHostKeyValidationskipHostKeyValidation Spécifiez s’il faut ignorer la validation de la clé hôte.Specify whether to skip host key validation. Non.No. valeur par défaut : falseThe default value: false
hostKeyFingerprinthostKeyFingerprint Spécifiez l’empreinte de la clé hôte.Specify the finger print of the host key. Oui, si skipHostKeyValidation est défini sur false.Yes if the skipHostKeyValidation is set to false.
gatewayNamegatewayName Nom de la passerelle de gestion des données pour se connecter à un serveur SFTP local.Name of the Data Management Gateway to connect to an on-premises SFTP server. Oui en cas de copie de données à partir d’un serveur SFTP local.Yes if copying data from an on-premises SFTP server.
encryptedCredentialencryptedCredential Informations d’identification chiffrées pour accéder au serveur SFTP.Encrypted credential to access the SFTP server. Généré automatiquement lorsque vous spécifiez l’authentification de base (nom d’utilisateur + mot de passe) ou l’authentification SshPublicKey (nom d’utilisateur + chemin d’accès ou contenu de la clé privée) dans l’Assistant de copie ou la boîte de dialogue contextuelle ClickOnce.Auto-generated when you specify basic authentication (username + password) or SshPublicKey authentication (username + private key path or content) in copy wizard or the ClickOnce popup dialog. Non.No. S’applique uniquement pour la copie de données à partir d’un serveur SFTP local.Apply only when copying data from an on-premises SFTP server.

Utilisation de l’authentification de baseUsing basic authentication

Pour utiliser l’authentification de base, définissez authenticationType sur Basic et spécifiez les propriétés suivantes en plus des propriétés génériques du connecteur SFTP présentées dans la dernière section :To use basic authentication, set authenticationType as Basic, and specify the following properties besides the SFTP connector generic ones introduced in the last section:

PropriétéProperty DescriptionDescription ObligatoireRequired
userNameusername Utilisateur ayant accès au serveur SFTP.User who has access to the SFTP server. OUIYes
passwordpassword Mot de passe de l’utilisateur (nom d’utilisateur).Password for the user (username). OUIYes

Exemple : Authentification de baseExample: Basic authentication

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "mysftpserver",
            "port": 22,
            "authenticationType": "Basic",
            "username": "xxx",
            "password": "xxx",
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "gatewayName": "mygateway"
        }
    }
}

Exemple : Authentification de base avec informations d’identification chiffréesExample: Basic authentication with encrypted credential

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "mysftpserver",
            "port": 22,
            "authenticationType": "Basic",
            "username": "xxx",
            "encryptedCredential": "xxxxxxxxxxxxxxxxx",
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "gatewayName": "mygateway"
        }
      }
}

Utilisation de l’authentification par clé publique SSHUsing SSH public key authentication

Pour utiliser l’authentification de clé publique SSH, définissez authenticationType sur SshPublicKey et spécifiez les propriétés suivantes en plus des propriétés génériques du connecteur SFTP présentées dans la dernière section :To use SSH public key authentication, set authenticationType as SshPublicKey, and specify the following properties besides the SFTP connector generic ones introduced in the last section:

PropriétéProperty DescriptionDescription ObligatoireRequired
userNameusername Utilisateur ayant accès au serveur SFTPUser who has access to the SFTP server OUIYes
privateKeyPathprivateKeyPath Spécifiez le chemin absolu au fichier de clé privée auquel la passerelle peut accéder.Specify absolute path to the private key file that gateway can access. Spécifiez soit la propriété privateKeyPath, soit la propriété privateKeyContent.Specify either the privateKeyPath or privateKeyContent.

S’applique uniquement pour la copie de données à partir d’un serveur SFTP local.Apply only when copying data from an on-premises SFTP server.
privateKeyContentprivateKeyContent Une chaîne sérialisée du contenu de la clé privée.A serialized string of the private key content. L’Assistant de copie peut lire le fichier de clé privée et extraire le contenu de clé privée automatiquement.The Copy Wizard can read the private key file and extract the private key content automatically. Si vous utilisez tout autre outil/SDK, utilisez plutôt la propriété privateKeyPath.If you are using any other tool/SDK, use the privateKeyPath property instead. Spécifiez soit la propriété privateKeyPath, soit la propriété privateKeyContent.Specify either the privateKeyPath or privateKeyContent.
passPhrasepassPhrase Spécifiez la phrase secrète/le mot de passe pour déchiffrer la clé privée si le fichier de clé est protégé par une phrase secrète.Specify the pass phrase/password to decrypt the private key if the key file is protected by a pass phrase. Oui, si le fichier de clé privée est protégé par une phrase secrète.Yes if the private key file is protected by a pass phrase.

Notes

Le connecteur SFTP prend en charge la clé OpenSSH RSA/DSA.SFTP connector supports RSA/DSA OpenSSH key. Assurez-vous que le contenu de votre keyfile commence par «-----BEGIN [RSA/DSA] PRIVATE KEY-----».Make sure your key file content starts with "-----BEGIN [RSA/DSA] PRIVATE KEY-----". Si le fichier de clé privée est un fichier au format ppk, utilisez l’outil Putty pour effectuer la conversion du format .ppk vers le format OpenSSH.If the private key file is a ppk-format file, please use Putty tool to convert from .ppk to OpenSSH format.

Exemple : authentification SshPublicKey à l’aide du chemin du fichier de clé privéeExample: SshPublicKey authentication using private key filePath

{
    "name": "SftpLinkedServiceWithPrivateKeyPath",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "mysftpserver",
            "port": 22,
            "authenticationType": "SshPublicKey",
            "username": "xxx",
            "privateKeyPath": "D:\\privatekey_openssh",
            "passPhrase": "xxx",
            "skipHostKeyValidation": true,
            "gatewayName": "mygateway"
        }
    }
}

Exemple : authentification SshPublicKey à l’aide du contenu de clé privéeExample: SshPublicKey authentication using private key content

{
    "name": "SftpLinkedServiceWithPrivateKeyContent",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "mysftpserver.westus.cloudapp.azure.com",
            "port": 22,
            "authenticationType": "SshPublicKey",
            "username": "xxx",
            "privateKeyContent": "<base64 string of the private key content>",
            "passPhrase": "xxx",
            "skipHostKeyValidation": true
        }
    }
}

Propriétés du jeu de donnéesDataset properties

Pour obtenir une liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Création de jeux de données.For a full list of sections & properties available for defining datasets, see the Creating datasets article. Les sections comme la structure, la disponibilité et la stratégie d'un jeu de données JSON sont similaires pour tous les types de jeux de données.Sections such as structure, availability, and policy of a dataset JSON are similar for all dataset types.

La section typeProperties est différente pour chaque type de jeu de données.The typeProperties section is different for each type of dataset. Elle fournit des informations spécifiques au type de jeu de données.It provides information that is specific to the dataset type. La section typeProperties pour un jeu de données de type FileShare a les propriétés suivantes :The typeProperties section for a dataset of type FileShare dataset has the following properties:

PropriétéProperty DescriptionDescription ObligatoireRequired
folderPathfolderPath Sous-chemin du dossier.Sub path to the folder. Utilisez le caractère d’échappement « \ » pour les caractères spéciaux contenus dans la chaîne.Use escape character ‘ \ ’ for special characters in the string. Pour obtenir des exemples, consultez la section Exemples de définitions de jeux de données et de services liés.See Sample linked service and dataset definitions for examples.

Vous pouvez également effectuer une combinaison avec la propriété partitionBy pour que les chemins d’accès de dossier soient basés sur les dates et heures de démarrage et d’arrêt de la tranche.You can combine this property with partitionBy to have folder paths based on slice start/end date-times.
OUIYes
fileNamefileName Spécifiez le nom du fichier dans l’élément folderPath si vous souhaitez que la table se réfère à un fichier spécifique du dossier.Specify the name of the file in the folderPath if you want the table to refer to a specific file in the folder. Si vous ne spécifiez aucune valeur pour cette propriété, le tableau pointe vers tous les fichiers du dossier.If you do not specify any value for this property, the table points to all files in the folder.

Lorsque fileName n’est pas spécifié pour un jeu de données de sortie, le nom du fichier généré aura ce format dans l’exemple suivant :When fileName is not specified for an output dataset, the name of the generated file would be in the following this format:

Data.<Guid>.txt (Exemple : Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txtData.<Guid>.txt (Example: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt
NonNo
fileFilterfileFilter Spécifiez un filtre à utiliser pour sélectionner un sous-ensemble de fichiers dans le folderPath plutôt que tous les fichiers.Specify a filter to be used to select a subset of files in the folderPath rather than all files.

Les valeurs autorisées sont : * (plusieurs caractères) et ? (caractère unique).Allowed values are: * (multiple characters) and ? (single character).

Exemple 1 : "fileFilter": "*.log"Examples 1: "fileFilter": "*.log"
Exemple 2 : "fileFilter": 2014-1-?.txt"Example 2: "fileFilter": 2014-1-?.txt"

fileFilter s’applique à un jeu de données FileShare d’entrée.fileFilter is applicable for an input FileShare dataset. Cette propriété n’est pas prise en charge avec HDFS.This property is not supported with HDFS.
NonNo
partitionedBypartitionedBy partitionedBy peut être utilisé pour spécifier un folderPath dynamique, fileName pour les données de série chronologique.partitionedBy can be used to specify a dynamic folderPath, filename for time series data. Par exemple, folderPath peut être paramétré pour toutes les heures de données.For example, folderPath parameterized for every hour of data. NonNo
formatformat Les types de formats suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat.The following format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs.Set the type property under format to one of these values. Pour en savoir plus, consultez les sections relatives à format Text, format Json, format Avro, format Orc et format Parquet.For more information, see Text Format, Json Format, Avro Format, Orc Format, and Parquet Format sections.

Si vous souhaitez copier des fichiers en l’état entre des magasins de fichiers (copie binaire), ignorez la section Format dans les deux définitions de jeu de données d’entrée et de sortie.If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions.
NonNo
compressioncompression Spécifiez le type et le niveau de compression pour les données.Specify the type and level of compression for the data. Types pris en charge : GZip, Deflate, BZip2 et ZipDeflate.Supported types are: GZip, Deflate, BZip2, and ZipDeflate. Niveaux pris en charge : Optimal et Fastest.Supported levels are: Optimal and Fastest. Pour plus d’informations, consultez Formats de fichiers et de compression pris en charge dans Azure Data Factory.For more information, see File and compression formats in Azure Data Factory. NonNo
useBinaryTransferuseBinaryTransfer Spécifiez si vous voulez utiliser le mode de transfert binaire.Specify whether use Binary transfer mode. True pour le mode binaire et false pour ASCII.True for binary mode and false ASCII. Valeur par défaut : True.Default value: True. Cette propriété peut uniquement être utilisée quand le service lié associé est de type : FtpServer.This property can only be used when associated linked service type is of type: FtpServer. NonNo

Notes

fileName et fileFilter ne peuvent pas être utilisés simultanément.filename and fileFilter cannot be used simultaneously.

Utilisation de la propriété partitionedByUsing partionedBy property

Comme mentionné dans la section précédente, vous pouvez spécifier un folderPath dynamique, fileName pour les données de série chronologique avec partitionedBy.As mentioned in the previous section, you can specify a dynamic folderPath, filename for time series data with partitionedBy. Vous pouvez le faire avec les macros Data Factory et les variables système SliceStart et SliceEnd, qui indiquent la période logique d’une tranche de données spécifique.You can do so with the Data Factory macros and the system variable SliceStart, SliceEnd that indicate the logical time period for a given data slice.

Consultez les articles Jeux de données dans Azure Data Factory, Planification et exécution avec Data Factory et Pipelines et activités dans Azure Data Factory pour en savoir plus sur les jeux de données de série chronologique, la planification et les segments.To learn about time series datasets, scheduling, and slices, See Creating Datasets, Scheduling & Execution, and Creating Pipelines articles.

Exemple 1 :Sample 1:

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

Dans cet exemple, {Slice} est remplacé par la valeur de la variable système Data Factory SliceStart au format (AAAAMMJJHH) spécifié.In this example {Slice} is replaced with the value of Data Factory system variable SliceStart in the format (YYYYMMDDHH) specified. SliceStart fait référence à l'heure de début du segment.The SliceStart refers to start time of the slice. folderPath est différent pour chaque segment.The folderPath is different for each slice. Par exemple : wikidatagateway/wikisampledataout/2014100103 ou wikidatagateway/wikisampledataout/2014100104.Example: wikidatagateway/wikisampledataout/2014100103 or wikidatagateway/wikisampledataout/2014100104.

Exemple 2 :Sample 2:

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

Dans cet exemple, l'année, le mois, le jour et l'heure de SliceStart sont extraits dans des variables distinctes qui sont utilisées par les propriétés folderPath et fileName.In this example, year, month, day, and time of SliceStart are extracted into separate variables that are used by folderPath and fileName properties.

Propriétés de l’activité de copieCopy activity properties

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Création de pipelines.For a full list of sections & properties available for defining activities, see the Creating Pipelines article. Les propriétés comme le nom, la description, les tables d'entrée et de sortie et les différentes stratégies sont disponibles pour tous les types d'activités.Properties such as name, description, input and output tables, and policies are available for all types of activities.

En revanche, les propriétés disponibles dans la section typeProperties de l’activité varient pour chaque type d'activité.Whereas, the properties available in the typeProperties section of the activity vary with each activity type. Pour l’activité de copie, les propriétés de type dépendent des types de sources et récepteurs.For Copy activity, the type properties vary depending on the types of sources and sinks.

Dans une activité de copie, quand la source est de type FileSystemSource, les propriétés suivantes sont disponibles dans la section typeProperties :In Copy Activity, when source is of type FileSystemSource, the following properties are available in typeProperties section:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
recursiverecursive Indique si les données sont lues de manière récursive dans les sous-dossiers ou uniquement dans le dossier spécifié.Indicates whether the data is read recursively from the sub folders or only from the specified folder. True, False (par défaut)True, False (default) NonNo

Formats de fichier et de compression pris en chargeSupported file and compression formats

Pour plus d’informations, voir Formats de fichiers et de compression pris en charge dans Azure Data Factory.See File and compression formats in Azure Data Factory article on details.

Exemple JSON : copier des données d’un serveur SFTP vers Stockage Blob AzureJSON Example: Copy data from SFTP server to Azure blob

L’exemple suivant présente des exemples de définitions de JSON que vous pouvez utiliser pour créer un pipeline à l’aide de Visual Studio ou d’Azure PowerShell.The following example provides sample JSON definitions that you can use to create a pipeline by using Visual Studio or Azure PowerShell. Ils indiquent comment copier des données depuis la source SFTP vers Azure Blob Storage.They show how to copy data from SFTP source to Azure Blob Storage. Toutefois, les données peuvent être copiées directement vers l’un des récepteurs indiqués ici , via l’activité de copie de Microsoft Azure Data Factory.However, data can be copied directly from any of sources to any of the sinks stated here using the Copy Activity in Azure Data Factory.

Important

Cet exemple fournit des extraits de code JSON.This sample provides JSON snippets. Il n’inclut pas d’instructions détaillées pour la création de la fabrique de données.It does not include step-by-step instructions for creating the data factory. Les instructions se trouvent dans l’article Déplacement de données entre des emplacements locaux et le cloud .See moving data between on-premises locations and cloud article for step-by-step instructions.

L’exemple contient les entités de fabrique de données suivantes :The sample has the following data factory entities:

L’exemple copie des données d’un serveur SFTP vers un objet blob Azure toutes les heures.The sample copies data from an SFTP server to an Azure blob every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties used in these samples are described in sections following the samples.

Service lié SFTPSFTP linked service

Cet exemple utilise l’authentification de base avec le nom d’utilisateur et le mot de passe en texte brut.This example uses the basic authentication with user name and password in plain text. Vous pouvez également utiliser une des méthodes suivantes :You can also use one of the following ways:

  • Authentification de base avec des informations d’identification chiffréesBasic authentication with encrypted credentials
  • Authentification par clé publique SSHSSH public key authentication

Consultez la section Service lié FTP pour connaître les différents types d’authentification que vous pouvez utiliser.See FTP linked service section for different types of authentication you can use.


{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "mysftpserver",
            "port": 22,
            "authenticationType": "Basic",
            "username": "myuser",
            "password": "mypassword",
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "gatewayName": "mygateway"
        }
    }
}

Service lié Azure StorageAzure Storage linked service

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Jeu de données d’entrée SFTPSFTP input dataset

Ce jeu de données fait référence au dossier SFTP mysharedfolder et au fichier test.csv.This dataset refers to the SFTP folder mysharedfolder and file test.csv. Le pipeline copie le fichier vers la destination.The pipeline copies the file to the destination.

La définition de « external » : « true» informe le service Data Factory qu’il s’agit d’un jeu de données qui est externe à Data Factory et non produit par une activité dans Data Factory.Setting "external": "true" informs the Data Factory service that the dataset is external to the data factory and is not produced by an activity in the data factory.

{
  "name": "SFTPFileInput",
  "properties": {
    "type": "FileShare",
    "linkedServiceName": "SftpLinkedService",
    "typeProperties": {
      "folderPath": "mysharedfolder",
      "fileName": "test.csv"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Jeu de données de sortie d'objet Blob AzureAzure Blob output dataset

Les données sont écrites dans un nouvel objet blob toutes les heures (fréquence : heure, intervalle : 1).Data is written to a new blob every hour (frequency: hour, interval: 1). Le chemin d’accès du dossier pour l’objet blob est évalué dynamiquement en fonction de l’heure de début du segment en cours de traitement.The folder path for the blob is dynamically evaluated based on the start time of the slice that is being processed. Le chemin d'accès du dossier utilise l'année, le mois, le jour et l'heure de l'heure de début.The folder path uses year, month, day, and hours parts of the start time.

{
    "name": "AzureBlobOutput",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/sftp/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Pipeline avec activité de copiePipeline with Copy activity

Le pipeline contient une activité de copie qui est configurée pour utiliser les jeux de données d'entrée et de sortie, et qui est planifiée pour s'exécuter toutes les heures.The pipeline contains a Copy Activity that is configured to use the input and output datasets and is scheduled to run every hour. Dans la définition du pipeline JSON, le type source est défini sur FileSystemSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to FileSystemSource and sink type is set to BlobSink.

{
    "name": "pipeline",
    "properties": {
        "activities": [{
            "name": "SFTPToBlobCopy",
            "inputs": [{
                "name": "SFTPFileInput"
            }],
            "outputs": [{
                "name": "AzureBlobOutput"
            }],
            "type": "Copy",
            "typeProperties": {
                "source": {
                    "type": "FileSystemSource"
                },
                "sink": {
                    "type": "BlobSink"
                }
            },
            "scheduler": {
                "frequency": "Hour",
                "interval": 1
            },
            "policy": {
                "concurrency": 1,
                "executionPriorityOrder": "NewestFirst",
                "retry": 1,
                "timeout": "00:05:00"
            }
        }],
        "start": "2017-02-20T18:00:00Z",
        "end": "2017-02-20T19:00:00Z"
    }
}

Performances et réglagePerformance and Tuning

Consultez l’article Guide sur les performances et le réglage de l’activité de copie pour en savoir plus sur les facteurs clés affectant les performances de déplacement des données (activité de copie) dans Azure Data Factory et les différentes manières de les optimiser.See Copy Activity Performance & Tuning Guide to learn about key factors that impact performance of data movement (Copy Activity) in Azure Data Factory and various ways to optimize it.

Étapes suivantesNext Steps

Consultez les articles suivants :See the following articles: