Copier et transformer des données dans le serveur SFTP en utilisant Azure Data Factory ou Azure Synapse Analytics

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 !

Cet article explique comment utiliser l’activité de copie pour copier des données depuis et vers le serveur FTP sécurisé (SFTP) et utiliser Data Flow pour transformer des données dans le serveur SFTP. Pour en savoir plus lisez l’article d’introduction pour Azure Data Factory ou Azure Synapse Analytics.

Fonctionnalités prises en charge

Ce connecteur SFTP est pris en charge pour les capacités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/récepteur)
Mappage de flux de données (source/récepteur) 0
Activité de recherche
Activité GetMetadata
Supprimer l’activité

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Plus précisément, le connecteur SFTP prend en charge les opérations suivantes :

Prérequis

Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.

Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.

Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.

Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.

Bien démarrer

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié SFTP à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié SFTP dans l’interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez SFTP et sélectionnez le connecteur SFTP.

    Screenshot of the SFTP connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Screenshot of configuration for an SFTP linked service.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations détaillées sur les propriétés utilisées pour définir les entités spécifiques de SFTP.

Propriétés du service lié

Les propriétés suivantes sont prises en charge pour le service lié SFTP :

Propriété Description Obligatoire
type La propriété type doit être définie sur Sftp. Oui
host Nom ou adresse IP du serveur SFTP. Oui
port Port sur lequel le serveur SFTP est à l’écoute.
La valeur autorisée est un entier et la valeur par défaut est 22.
Non
skipHostKeyValidation Spécifiez s’il faut ignorer la validation de la clé hôte.
Les valeurs autorisées sont True et False (par défaut).
Non
hostKeyFingerprint Spécifiez l’empreinte de la clé hôte. Oui, si la valeur de « skipHostKeyValidation » est définie sur false.
authenticationType Spécifiez le type d’authentification.
Les valeurs autorisées sont De base, SshPublicKey et Multifacteur. Pour plus d’informations sur les propriétés, consultez la section Utiliser une authentification de base. Pour obtenir des exemples JSON, consultez la section Utiliser l’authentification par clé publique SSH.
Oui
connectVia Le runtime d’intégration à utiliser pour se connecter à la banque de données. Pour en savoir plus, consultez la section Conditions préalables. Si le runtime d’intégration n’est pas spécifié, le service utilise le runtime d’intégration Azure par défaut. Non

Utiliser une authentification de base

Pour utiliser l’authentification de base, définissez la propriété authenticationType sur De base 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 section précédente :

Propriété Description Obligatoire
userName Utilisateur ayant accès au serveur SFTP. Oui
mot de passe Mot de passe de l’utilisateur (userName). Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Oui

Exemple :

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Utiliser l’authentification par clé publique SSH

Pour utiliser l’authentification par clé publique SSH, définissez la propriété « authenticationType » sur De base 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 :

Propriété Description Obligatoire
userName Utilisateur ayant accès au serveur SFTP. Oui
privateKeyPath Spécifiez le chemin absolu au fichier de clé privée auquel le runtime d’intégration peut accéder. Cela s’applique uniquement quand le type auto-hébergé du runtime d’intégration est spécifié dans « connectVia ». Spécifiez privateKeyPath ou privateKeyContent.
privateKeyContent Contenu de clé privée SSH encodé en Base64. La clé privée SSH doit être au format OpenSSH. Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Spécifiez privateKeyPath ou privateKeyContent.
passPhrase Spécifiez la phrase secrète ou le mot de passe pour déchiffrer la clé privée si le fichier de clé ou le contenu de clé est protégé par une phrase secrète. Marquez ce champ en tant que SecureString afin de le stocker en toute sécurité, ou référencez un secret stocké dans Azure Key Vault. Oui, si le fichier de clé privée ou le contenu de clé est protégé par une phrase secrète.

Notes

Le connecteur SFTP prend en charge une clé OpenSSH RSA/DSA. Assurez-vous que le contenu de votre fichier de clé commence par « -----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 au format OpenSSH.

Exemple 1 : Authentification SshPublicKey avec un chemin de fichier de clé privée

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "xxx",
            "privateKeyPath": "D:\\privatekey_openssh",
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple 2 : Authentification SshPublicKey avec un contenu de clé privée

{
    "name": "SftpLinkedService",
    "type": "Linkedservices",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "<username>",
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 string of the private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Utiliser l'authentification multifacteur

Pour utiliser l’authentification multifacteur qui est une combinaison d’authentifications de base et de clé publique SSH, spécifiez le nom d’utilisateur, le mot de passe et les informations de clé privée décrites dans les sections ci-dessus.

Exemple : authentification multifacteur

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<host>",
            "port": 22,
            "authenticationType": "MultiFactor",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 encoded private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<passphrase for private key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Jeux de données.

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour SFTP sous les paramètres location dans le jeu de données basé sur le format :

Propriété Description Obligatoire
type La propriété type sous location dans le jeu de données doit être définie sur SftpLocation. Oui
folderPath Chemin du dossier. Si vous souhaitez utiliser un caractère générique pour filtrer le dossier, ignorez ce paramètre et spécifiez le chemin dans les paramètres de la source de l’activité. Non
fileName Nom de fichier sous le chemin folderPath spécifié. Si vous souhaitez utiliser un caractère générique pour filtrer les fichiers, ignorez ce paramètre et spécifiez le nom de fichier dans les paramètres de la source de l’activité. Non

Exemple :

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "SftpLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Propriétés de l’activité de copie

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par la source SFTP.

SFTP en tant que source

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour SFTP sous les paramètres storeSettings dans la source de copie basée sur le format :

Propriété Description Obligatoire
type La propriété type sous storeSettings doit être définie sur SftpReadSettings. Oui
Rechercher les fichiers à copier
OPTION 1 : chemin d’accès statique
Copiez à partir du chemin de dossier/fichier spécifié dans le jeu de données. Si vous souhaitez copier tous les fichiers d’un dossier, spécifiez en plus wildcardFileName comme *.
OPTION 2 : caractère générique
- wildcardFolderPath
Chemin d’accès du dossier avec des caractères génériques pour filtrer les dossiers sources.
Les caractères génériques autorisés sont * (correspond à zéro, un ou plusieurs caractères) et ? (correspond à zéro ou un caractère) ; utilisez ^ en guise d’échappement si votre nom de dossier contient effectivement un caractère générique ou ce caractère d’échappement.
Pour d’autres exemples, consultez Exemples de filtres de dossier et de fichier.
Non
OPTION 2 : caractère générique
- wildcardFileName
Nom du fichier avec des caractères génériques situé dans le chemin folderPath/wildcardFolderPath spécifié pour filtrer les fichiers sources.
Les caractères génériques autorisés sont : * (correspond à zéro ou plusieurs caractères) et ? (correspond à zéro ou à un caractère) ; utilisez ^ en guise d’échappement si votre nom de fichier contient effectivement ce caractère d’échappement ou générique. Pour d’autres exemples, consultez Exemples de filtres de dossier et de fichier.
Oui
OPTION 3 : liste de fichiers
- fileListPath
Indique de copier un ensemble de fichiers spécifié. Pointez sur un fichier texte qui contient une liste de fichiers que vous voulez copier (un fichier par ligne, avec le chemin relatif au chemin configuré dans le jeu de données).
Lorsque vous utilisez cette option, ne spécifiez pas le nom de fichier dans le jeu de données. Pour plus d’exemples, consultez Exemples de listes de fichiers.
Non
Paramètres supplémentaires
recursive Indique si les données sont lues de manière récursive à partir des sous-dossiers ou uniquement du dossier spécifié. Lorsque l’option « recursive » est définie sur true et que le récepteur est un magasin basé sur un fichier, un dossier vide ou un sous-dossier n’est pas copié ou créé sur le récepteur.
Les valeurs autorisées sont true (par défaut) et false.
Cette propriété ne s’applique pas lorsque vous configurez fileListPath.
Non
deleteFilesAfterCompletion Indique si les fichiers binaires seront supprimés du magasin source après leur déplacement vers le magasin de destination. La suppression se faisant par fichier, lorsque l’activité de copie échoue, vous pouvez constater que certains fichiers ont déjà été copiés vers la destination et supprimés de la source, tandis que d’autres restent dans le magasin source.
Cette propriété est valide uniquement dans un scénario de copie de fichiers binaires. La valeur par défaut est false.
Non
modifiedDatetimeStart Les fichiers sont filtrés en fonction de l’attribut Dernière modification.
Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.
Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Cette propriété ne s’applique pas lorsque vous configurez fileListPath.
Non
modifiedDatetimeEnd Identique à ce qui précède. Non
enablePartitionDiscovery Pour les fichiers partitionnés, spécifiez s’il faut analyser les partitions à partir du chemin d’accès au fichier et les ajouter en tant que colonnes sources supplémentaires.
Les valeurs autorisées sont false (par défaut) et true.
Non
partitionRootPath Lorsque la découverte de partition est activée, spécifiez le chemin d’accès racine absolu pour pouvoir lire les dossiers partitionnés en tant que colonnes de données.

S’il n’est pas spécifié, par défaut :
– Quand vous utilisez le chemin d’accès du fichier dans le jeu de données ou la liste des fichiers sur la source, le chemin racine de la partition est le chemin d’accès configuré dans le jeu de données.
– Quand vous utilisez le filtre de dossiers de caractères génériques, le chemin d’accès racine de la partition est le sous-chemin d’accès avant le premier caractère générique.

Par exemple, en supposant que vous configurez le chemin d’accès dans le jeu de données en tant que « root/folder/year=2020/month=08/day=27 » :
– Si vous spécifiez le chemin d’accès racine de la partition en tant que « root/folder/year=2020 », l’activité de copie génère deux colonnes supplémentaires, month et day, ayant respectivement la valeur « 08 » et « 27 », en plus des colonnes contenues dans les fichiers.
– Si le chemin d’accès racine de la partition n’est pas spécifié, aucune colonne supplémentaire n’est générée.
Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non
disableChunking Lors de la copie des données à partir de SFTP, le service tente d’abord d’obtenir la longueur du fichier, puis de le diviser en plusieurs parties et de les lire en parallèle. Spécifiez si votre serveur SFTP prend en charge l’obtention de la longueur du fichier ou la lecture à partir d’un décalage donné.
Les valeurs autorisées sont false (par défaut), true.
Non

Exemple :

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "SftpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

SFTP en tant que récepteur

Azure Data Factory prend en charge les formats de fichier suivants. Reportez-vous à chaque article pour les paramètres basés sur le format.

Les propriétés suivantes sont prises en charge pour SFTP sous les paramètres storeSettings dans un récepteur de copie basée sur le format :

Propriété Description Obligatoire
type La propriété type sous storeSettings doit être définie sur SftpWriteSettings. Oui
copyBehavior Définit le comportement de copie lorsque la source est constituée de fichiers d’une banque de données basée sur un fichier.

Les valeurs autorisées sont les suivantes :
- PreserveHierarchy (par défaut) : conserve la hiérarchie des fichiers dans le dossier cible. Le chemin relatif du fichier source vers le dossier source est identique au chemin relatif du fichier cible vers le dossier cible.
- FlattenHierarchy : tous les fichiers du dossier source figurent dans le premier niveau du dossier cible. Les noms des fichiers cibles sont générés automatiquement.
- MergeFiles : fusionne tous les fichiers du dossier source dans un seul fichier. Si le nom de fichier est spécifié, le nom de fichier fusionné est le nom spécifié. Dans le cas contraire, il s’agit d’un nom de fichier généré automatiquement.
Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non
useTempFileRename Indiquez si vous souhaitez effectuer un chargement dans des fichiers temporaires puis les renommer, ou si vous souhaitez écrire directement dans l’emplacement de dossier ou de fichier cible. Par défaut, le service écrit d’abord dans des fichiers temporaires, puis les renomme une fois le chargement terminé. Cette séquence permet (1) d’éviter les conflits susceptibles d’entraîner l’altération d’un fichier si d’autres processus écrivent dans le même fichier, et (2) de garantir l’existence de la version d’origine du fichier pendant le transfert. Si votre serveur SFTP ne prend pas en charge l’opération de renommage, désactivez cette option et vérifiez qu’aucun autre processus d’écriture n’est en cours sur le fichier cible. Pour plus d’informations, consultez le conseil de dépannage fourni après ce tableau. Non. La valeur par défaut est true.
operationTimeout Délai d’attente avant l’expiration de chaque demande d’écriture au serveur SFTP. La valeur par défaut est 60 minutes (01:00:00). Non

Conseil

Si vous recevez l’erreur « UserErrorSftpPathNotFound », « UserErrorSftpPermissionDenied » ou « SftpOperationFail » lorsque vous écrivez des données dans SFTP et que l’utilisateur SFTP que vous utilisez dispose des autorisations appropriées, vérifiez que l’opération de renommage du fichier de prise en charge de votre serveur SFTP fonctionne. Si ce n’est pas le cas, désactivez l’option Charger avec le fichier temporaire (useTempFileRename) et réessayez. Pour en savoir plus sur cette propriété, consultez le tableau précédent. Si vous utilisez un runtime d’intégration auto-hébergé pour l’activité de copie, veillez à utiliser la version 4.6 ou une version ultérieure.

Exemple :

"activities":[
    {
        "name": "CopyToSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "BinarySink",
                "storeSettings":{
                    "type": "SftpWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

Exemples de filtres de dossier et de fichier

Cette section décrit le comportement résultant de l’utilisation de filtres de caractères génériques avec des chemins de dossiers et des noms de fichiers.

folderPath fileName recursive Structure du dossier source et résultat du filtrage (les fichiers en gras sont récupérés)
Folder* (vide, utiliser la valeur par défaut) false DossierA
    Fichier1.csv
    File2.json
    Sousdossier1
        File3.csv
        File4.json
        File5.csv
AutreDossierB
    Fichier6.csv
Folder* (vide, utiliser la valeur par défaut) true DossierA
    Fichier1.csv
    File2.json
    Sousdossier1
        File3.csv
        File4.json
        File5.csv
AutreDossierB
    Fichier6.csv
Folder* *.csv false DossierA
    Fichier1.csv
    Fichier2.json
    Sousdossier1
        File3.csv
        File4.json
        File5.csv
AutreDossierB
    Fichier6.csv
Folder* *.csv true DossierA
    Fichier1.csv
    Fichier2.json
    Sousdossier1
        File3.csv
        File4.json
        File5.csv
AutreDossierB
    Fichier6.csv

Exemples de liste de fichiers

Ce tableau décrit le comportement résultant de l’utilisation d’un chemin de liste de fichiers dans la source de l’activité de copie. Il suppose que vous disposez de la structure de dossiers sources suivante et que vous souhaitez copier les fichiers en gras :

Exemple de structure source Contenu de FileListToCopy.txt Configuration d’Azure Data Factory
root
    DossierA
        Fichier1.csv
        Fichier2.json
        Sousdossier1
            File3.csv
            File4.json
            File5.csv
    Métadonnées
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
Dans le jeu de données :
- chemin d’accès du dossier : root/FolderA

Dans la source de l’activité de copie :
- chemin d’accès à la liste de fichiers : root/Metadata/FileListToCopy.txt

Le chemin d’accès à la liste de fichiers pointe vers un fichier texte dans le même magasin de données qui contient la liste de fichiers que vous voulez copier (un fichier par ligne étant le chemin d’accès relatif au chemin d’accès configuré dans le jeu de données).

Propriétés du mappage de flux de données

Lorsque vous transformez des données en flux de données de mappage, vous pouvez lire et écrire des fichiers à partir de SFTP aux formats suivants :

Les paramètres spécifiques du format se trouvent dans la documentation de ce format. Pour plus d’informations, consultez Transformation de source en flux de données de mappage et Transformation de récepteur en flux de données de mappage.

Notes

La validation de la clé hôte SSH n’est pas prise en charge dans le flux de données de mappage actuellement.

Notes

Pour accéder à un serveur SFTP local, vous devez utiliser le réseau virtuel managé de l’espace de travail Azure Data Factory ou Synapse via un point de terminaison privé. Pour connaître les étapes détaillées, reportez-vous à ce tutoriel.

Transformation de la source

Le tableau ci-dessous répertorie les propriétés prises en charge par une source SFTP. Vous pouvez modifier ces propriétés sous l’onglet Options de la source. Lorsque vous utilisez un jeu de données inlined, vous verrez des paramètres supplémentaires qui sont les mêmes que les propriétés décrites dans la section des propriétés du jeu de données.

Nom Description Obligatoire Valeurs autorisées Propriété du script de flux de données
Chemin contenant des caractères génériques Si vous utilisez un modèle à caractères génériques, le système demande à ADF de lire chaque dossier et fichier correspondant en boucle dans une même transformation de source. Il s’agit d’un moyen efficace de traiter plusieurs fichiers dans un seul et même flux. Non String[] wildcardPaths
Chemin racine de la partition Si vous avez partitionné des dossiers dans votre source de fichier avec un format key=value (par exemple, year=2019), vous pouvez attribuer le niveau supérieur de cette arborescence de dossiers de partitions à un nom de colonne dans votre flux de données. Non String partitionRootPath
N’autoriser aucun fichier trouvé Si la valeur est true, aucune erreur n’est levée si aucun fichier n’est trouvé. Non true ou false ignoreNoFilesFound
Liste de fichiers Il s’agit d’un ensemble de fichiers. Créez un fichier texte qui inclut une liste de fichiers avec chemin relatif à traiter. Pointez sur ce fichier texte. Non true ou false fileList
Colonne où stocker le nom du fichier Stockez le nom du fichier source dans une colonne de vos données. Entrez un nouveau nom de colonne pour stocker la chaîne de nom de fichier. Non String rowUrlColumn
Après l’exécution après l’exécution du flux de données, choisissez de ne rien faire avec le fichier source, de le supprimer ou de le déplacer. Pour le déplacement, les chemins sont des chemins relatifs. Non Supprimer : true ou false
Déplacer : ['<from>', '<to>']
purgeFiles
moveFiles
Filtrer par date de dernière modification Vous pouvez filtrer les fichiers traités en spécifiant une plage de dates sur laquelle les fichiers ont été modifiés pour la dernière fois. Toutes les dates et heures sont exprimées en UTC. Non Timestamp modifiedAfter
modifiedBefore

Exemple de script source SFTP

Quand vous utilisez un jeu de données SFTP comme type de source, le script de flux de données associé est le suivant :

source(allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: true,
	purgeFiles: true,
	fileList: true,
	modifiedAfter: (toTimestamp(1647388800000L)),
	modifiedBefore: (toTimestamp(1647561600000L)),
	partitionRootPath: 'partdata',
	wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource

Transformation du récepteur

Le tableau ci-dessous répertorie les propriétés prises en charge par un récepteur SFTP. Vous pouvez modifier ces propriétés sous l’onglet Paramètres. Lorsque vous utilisez un jeu de données inlined, vous verrez des paramètres supplémentaires qui sont les mêmes que les propriétés décrites dans la section Propriétés du jeu de données.

Nom Description Obligatoire Valeurs autorisées Propriété du script de flux de données
Effacer le contenu du dossier Détermine si le contenu du dossier de destination doit être effacé avant l’écriture des données. Non true ou false truncate
Option de nom de fichier Format de nommage des données écrites. Par défaut, un fichier par partition au format part-#####-tid-<guid>. Non Modèle : Chaîne
Par partition : Chaîne[]
Fichier de nom en tant que données de colonne : String
Dossier de nom en tant que données de colonne : String
Sortie dans un fichier unique : ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
Tout mettre entre guillemets Détermine si toutes les valeurs doivent être placées entre guillemets. Non true ou false quoteAll

Exemple de script de récepteur SFTP

Quand vous utilisez un jeu de données SFTP comme type de récepteur, le script de flux de données associé est le suivant :

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	filePattern:'loans[n].csv',
	truncate: true,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SFTPSink

Propriétés de l’activité Lookup

Pour obtenir des informations sur les propriétés de l’activité de recherche, consultez Activité de recherche.

Propriétés de l’activité GetMetadata

Pour obtenir des informations sur les propriétés de l’activité GetMetadata, consultez Activité GetMetadata.

Propriétés de l’activité Delete

Pour obtenir des informations sur les propriétés de l’activité Delete, consultez Activité Delete.

Modèles hérités

Notes

Les modèles suivants sont toujours pris en charge tels quels à des fins de compatibilité descendante. Nous vous recommandons d’utiliser le nouveau modèle abordé précédemment, car l’interface utilisateur de création a basculé vers la génération du nouveau modèle.

Modèle de jeu de données hérité

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur FileShare. Oui
folderPath Chemin du dossier. Un filtre de caractères génériques est pris en charge. Les caractères génériques autorisés sont * (correspond à zéro, un ou plusieurs caractères) et ? (correspond à zéro ou un caractère) ; utilisez ^ en guise d’échappement si votre nom de fichier contient effectivement un caractère générique ou ce caractère d’échappement.

Exemples : dossier_racine/sous-dossier/ ; consultez d’autres exemples dans Exemples de filtres de dossier et de fichier.
Oui
fileName Filtre de noms ou de caractères génériques pour les fichiers sous le chemin « folderPath » spécifié. Si vous ne spécifiez pas de valeur pour cette propriété, le jeu de données pointe vers tous les fichiers du dossier.

Pour le filtre, les caractères génériques autorisés sont * (correspond à zéro, un ou plusieurs caractères) et ? (correspond à zéro ou un caractère).
- Exemple 1 : "fileName": "*.csv"
- Exemple 2 : "fileName": "???20180427.txt"
Utilisez ^ comme caractère d'échappement si le nom réel de votre dossier contient des caractères génériques ou ce caractère d'échappement.
Non
modifiedDatetimeStart Les fichiers sont filtrés en fonction de l’attribut Dernière modification. Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.

Les performances globales du déplacement des données sont affectées par l’activation de ce paramètre lorsque vous souhaitez filtrer des fichiers parmi un grand nombre de fichiers.

Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Non
modifiedDatetimeEnd Les fichiers sont filtrés en fonction de l’attribut Dernière modification. Les fichiers sont sélectionnés si leur dernière heure de modification est supérieure ou égale à modifiedDatetimeStart et inférieure à modifiedDatetimeEnd. L’heure est appliquée au fuseau horaire UTC au format 2018-12-01T05:00:00Z.

Les performances globales du déplacement des données sont affectées par l’activation de ce paramètre lorsque vous souhaitez filtrer des fichiers parmi un grand nombre de fichiers.

Les propriétés peuvent être NULL, ce qui signifie qu’aucun filtre d’attribut de fichier n’est appliqué au jeu de données. Lorsque modifiedDatetimeStart a une valeur DateHeure, mais que modifiedDatetimeEnd est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est supérieur ou égal à la valeur DateHeure sont sélectionnés. Lorsque modifiedDatetimeEnd a une valeur DateHeure, mais que modifiedDatetimeStart est NULL, cela signifie que les fichiers dont l’attribut de dernière modification est inférieur à la valeur DateHeure sont sélectionnés.
Non
format 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.

Si vous voulez analyser des fichiers dans un format spécifique, les types de format de fichier suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs. Pour plus d’informations, consultez les sections relatives à format Text, format Json, format Avro, format Orc et format Parquet.
Non (uniquement pour un scénario de copie binaire)
compression Spécifiez le type et le niveau de compression pour les données. Pour plus d’informations, voir Formats de fichier et de codecs de compression pris en charge.
Les types pris en charge sont : GZip, Deflate, BZip2 et ZipDeflate.
Les niveaux pris en charge sont Optimal et Fastest.
Non

Conseil

Pour copier tous les fichiers d’un dossier, spécifiez folderPath uniquement.
Pour copier un seul fichier avec un nom donné, spécifiez folderPath avec la partie dossier et fileName avec le nom du fichier.
Pour copier un sous-ensemble de fichiers d’un dossier, spécifiez folderPath avec la partie dossier et fileName avec le filtre de caractères génériques.

Notes

Si vous avez utilisé la propriété fileFilter pour le filtre de fichiers, il est encore pris en charge tel quel, mais nous vous recommandons d’utiliser à l’avenir la nouvelle fonctionnalité de filtre ajoutée à fileName.

Exemple :

{
    "name": "SFTPDataset",
    "type": "Datasets",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Modèle hérité de la source d’activité de copie

Propriété Description Obligatoire
type La propriété type de la source d’activité de copie doit être définie sur FileSystemSource Oui
recursive Indique si les données sont lues de manière récursive à partir des sous-dossiers ou uniquement du dossier spécifié. Lorsque l’option « recursive » est définie sur true et que le récepteur est un magasin basé sur un fichier, les dossiers et sous-dossiers vides ne sont pas copiés ni créés au niveau du récepteur.
Les valeurs autorisées sont true (par défaut) et false
Non
maxConcurrentConnections La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. Non

Exemple :

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SFTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Pour obtenir la liste des magasins de données pris en charge en tant que sources ou récepteurs par l'activité de copie, consultez les magasins de données pris en charge.