Gegevens kopiëren en transformeren in SFTP-server met behulp van Azure Data Factory of Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u kopieeractiviteit gebruikt om gegevens van en naar de beveiligde FTP-server (SFTP) te kopiëren en Gegevensstroom te gebruiken om gegevens te transformeren in de SFTP-server. Lees het inleidende artikel voor Azure Data Factory of Azure Synapse Analytics voor meer informatie.

Ondersteunde mogelijkheden

Deze SFTP-connector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR
Copy-activiteit (bron/sink) ① ②
Toewijzingsgegevensstroom (bron/sink)
Activiteit Lookup ① ②
GetMetadata-activiteit ① ②
Activiteit verwijderen ① ②

(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime

De SFTP-connector ondersteunt met name:

  • Bestanden kopiëren van en naar de SFTP-server met behulp van basic, openbare SSH-sleutel of meervoudige verificatie.
  • Bestanden kopiëren zoals dit is of door bestanden te parseren of genereren met de ondersteunde bestandsindelingen en compressiecodecs.

Vereisten

Als uw gegevensarchief zich in een on-premises netwerk, een virtueel Azure-netwerk of een virtuele particuliere cloud van Amazon bevindt, moet u een zelf-hostende Integration Runtime configureren om er verbinding mee te maken.

Als uw gegevensarchief een beheerde cloudgegevensservice is, kunt u De Azure Integration Runtime gebruiken. Als de toegang is beperkt tot IP-adressen die zijn goedgekeurd in de firewallregels, kunt u IP-adressen van Azure Integration Runtime toevoegen aan de acceptatielijst.

U kunt ook de beheerde functie voor integratieruntime voor virtuele netwerken in Azure Data Factory gebruiken om toegang te krijgen tot het on-premises netwerk zonder een zelf-hostende Integration Runtime te installeren en te configureren.

Zie Strategieën voor gegevenstoegang voor meer informatie over de netwerkbeveiligingsmechanismen en -opties die door Data Factory worden ondersteund.

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde SFTP-service maken met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde SFTP-service te maken in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar SFTP en selecteer de SFTP-connector.

    Screenshot of the SFTP connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Screenshot of configuration for an SFTP linked service.

configuratiedetails Verbinding maken or

De volgende secties bevatten details over eigenschappen die worden gebruikt om entiteiten te definiëren die specifiek zijn voor SFTP.

Eigenschappen van gekoppelde service

De volgende eigenschappen worden ondersteund voor de gekoppelde SFTP-service:

Eigenschappen Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op Sftp. Ja
host De naam of het IP-adres van de SFTP-server. Ja
poort De poort waarop de SFTP-server luistert.
De toegestane waarde is een geheel getal en de standaardwaarde is 22.
Nee
skipHostKeyValidation Geef op of hostsleutelvalidatie moet worden overgeslagen.
Toegestane waarden zijn waar en onwaar (standaard).
Nee
hostKeyFingerprint Geef de vingerafdruk van de hostsleutel op. Ja, als de 'skipHostKeyValidation' is ingesteld op false.
authenticationType Geef het verificatietype op.
Toegestane waarden zijn Basic, SshPublicKey en MultiFactor. Zie de sectie Basisverificatie gebruiken voor meer eigenschappen. Zie de sectie Openbare SSH-sleutelverificatie gebruiken voor JSON-voorbeelden.
Ja
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. Zie de sectie Vereisten voor meer informatie. Als de integration runtime niet is opgegeven, gebruikt de service de standaard Azure Integration Runtime. Nee

Basisverificatie gebruiken

Als u basisverificatie wilt gebruiken, stelt u de eigenschap authenticationType in op Basic en geeft u de volgende eigenschappen op naast de algemene eigenschappen van de SFTP-connector die in de vorige sectie zijn geïntroduceerd:

Eigenschappen Beschrijving Vereist
gebruikersnaam De gebruiker die toegang heeft tot de SFTP-server. Ja
password Het wachtwoord voor de gebruiker (userName). Markeer dit veld als SecureString om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in een Azure-sleutelkluis. Ja

Voorbeeld:

{
    "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"
        }
    }
}

Verificatie met openbare SSH-sleutels gebruiken

Als u verificatie met openbare SSH-sleutels wilt gebruiken, stelt u de eigenschap authenticationType in als SshPublicKey en geeft u de volgende eigenschappen op naast de algemene sfTP-connector die in de laatste sectie zijn geïntroduceerd:

Eigenschappen Beschrijving Vereist
gebruikersnaam De gebruiker die toegang heeft tot de SFTP-server. Ja
privateKeyPath Geef het absolute pad op naar het persoonlijke-sleutelbestand waartoe de Integration Runtime toegang heeft. Dit geldt alleen wanneer het zelf-hostende type Integration Runtime is opgegeven in ConnectVia. Geef een privateKeyPath van beide op of privateKeyContent.
privateKeyContent Inhoud van met Base64 gecodeerde persoonlijke SSH-sleutel. De persoonlijke SSH-sleutel moet de OpenSSH-indeling hebben. Markeer dit veld als SecureString om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in een Azure-sleutelkluis. Geef een privateKeyPath van beide op of privateKeyContent.
Passphrase Geef de wachtwoordzin of het wachtwoord op om de persoonlijke sleutel te ontsleutelen als het sleutelbestand of de sleutelinhoud wordt beveiligd door een wachtwoordzin. Markeer dit veld als SecureString om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in een Azure-sleutelkluis. Ja, als het bestand met de persoonlijke sleutel of de sleutelinhoud wordt beveiligd met een wachtwoordzin.

Notitie

De SFTP-connector ondersteunt een RSA/DSA OpenSSH-sleutel. Zorg ervoor dat de inhoud van het sleutelbestand begint met '-----BEGIN [RSA/DSA] PRIVATE KEY-----'. Als het bestand met de persoonlijke sleutel een PPK-indeling is, gebruikt u het hulpprogramma PuTTY om te converteren van PPK naar OpenSSH-indeling.

Voorbeeld 1: SshPublicKey-verificatie met behulp van filePath met een persoonlijke sleutel

{
    "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"
        }
    }
}

Voorbeeld 2: SshPublicKey-verificatie met persoonlijke sleutelinhoud

{
    "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"
        }
    }
}

Meervoudige verificatie gebruiken

Als u meervoudige verificatie wilt gebruiken die een combinatie is van basis- en SSH-verificatie met openbare sleutels, geeft u de gebruikersnaam, het wachtwoord en de persoonlijke sleutelgegevens op die in de bovenstaande secties worden beschreven.

Voorbeeld: meervoudige verificatie

{
    "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"
        }
    }
}

Eigenschappen van gegevensset

Zie het artikel Gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets .

Azure Data Factory ondersteunt de volgende bestandsindelingen. Raadpleeg elk artikel voor op indeling gebaseerde instellingen.

De volgende eigenschappen worden ondersteund voor SFTP onder location instellingen in de op indeling gebaseerde gegevensset:

Eigenschappen Beschrijving Vereist
type De typeeigenschap onder location in de gegevensset moet worden ingesteld op SftpLocation. Ja
folderPath Het pad naar de map. Als u een jokerteken wilt gebruiken om de map te filteren, slaat u deze instelling over en geeft u het pad op in de instellingen van de activiteitsbron. Nee
fileName De bestandsnaam onder het opgegeven folderPath. Als u een jokerteken wilt gebruiken om bestanden te filteren, slaat u deze instelling over en geeft u de bestandsnaam op in de instellingen van de activiteitsbron. Nee

Voorbeeld:

{
    "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"
        }
    }
}

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door de SFTP-bron.

SFTP als bron

Azure Data Factory ondersteunt de volgende bestandsindelingen. Raadpleeg elk artikel voor op indeling gebaseerde instellingen.

De volgende eigenschappen worden ondersteund voor SFTP onder de storeSettings instellingen in de bron voor kopiëren op basis van opmaak:

Eigenschappen Beschrijving Vereist
type De eigenschap type onder storeSettings moet worden ingesteld op SftpRead Instellingen. Ja
De bestanden zoeken die u wilt kopiëren
OPTIE 1: statisch pad
Kopieer vanuit de map/het bestandspad dat is opgegeven in de gegevensset. Als u alle bestanden uit een map wilt kopiëren, moet u ook opgeven wildcardFileName als *.
OPTIE 2: jokerteken
- jokertekenFolderPath
Het pad naar de map met jokertekens om bronmappen te filteren.
Toegestane jokertekens zijn * (komt overeen met nul of meer tekens) en ? (komt overeen met nul of één teken); gebruik ^ deze optie om te ontsnappen als uw werkelijke mapnaam een jokerteken of dit escape-teken bevat.
Zie voorbeelden van map- en bestandsfilters voor meer voorbeelden.
Nee
OPTIE 2: jokerteken
- wildcardFileName
De bestandsnaam met jokertekens onder de opgegeven folderPath/wildcardFolderPath om bronbestanden te filteren.
Toegestane jokertekens zijn * (komt overeen met nul of meer tekens) en ? (komt overeen met nul of één teken); gebruik ^ deze optie om te ontsnappen als uw werkelijke bestandsnaam jokertekens of dit escape-teken bevat. Zie voorbeelden van map- en bestandsfilters voor meer voorbeelden.
Ja
OPTIE 3: een lijst met bestanden
- fileListPath
Geeft aan om een opgegeven bestandsset te kopiëren. Wijs een tekstbestand aan met een lijst met bestanden die u wilt kopiëren (één bestand per regel, met het relatieve pad naar het pad dat is geconfigureerd in de gegevensset).
Wanneer u deze optie gebruikt, geeft u niet de bestandsnaam op in de gegevensset. Zie Voorbeelden van bestandslijsten voor meer voorbeelden.
Nee
Aanvullende instellingen
Recursieve Hiermee wordt aangegeven of de gegevens recursief worden gelezen uit de submappen of alleen uit de opgegeven map. Wanneer recursief is ingesteld op true en de sink een archief op basis van bestanden is, wordt een lege map of submap niet gekopieerd of gemaakt in de sink.
Toegestane waarden zijn waar (standaard) en onwaar.
Deze eigenschap is niet van toepassing wanneer u configureert fileListPath.
Nee
deleteFilesAfterCompletion Geeft aan of de binaire bestanden worden verwijderd uit het bronarchief nadat ze naar het doelarchief zijn verplaatst. Het verwijderen van bestanden is per bestand, dus wanneer de kopieeractiviteit mislukt, ziet u dat sommige bestanden al naar het doel zijn gekopieerd en uit de bron zijn verwijderd, terwijl anderen nog steeds in het bronarchief blijven.
Deze eigenschap is alleen geldig in het scenario voor het kopiëren van binaire bestanden. De standaardwaarde: false.
Nee
modifiedDatetimeStart Bestanden worden gefilterd op basis van het kenmerk Laatst gewijzigd.
De bestanden worden geselecteerd als de laatste wijzigingstijd groter is dan of gelijk is aan modifiedDatetimeStart en kleiner is dan modifiedDatetimeEnd. De tijd wordt toegepast op de UTC-tijdzone in de notatie 2018-12-01T05:00:00Z.
De eigenschappen kunnen NULL zijn, wat betekent dat er geen bestandskenmerkfilter wordt toegepast op de gegevensset. Wanneer modifiedDatetimeStart een datum/tijd-waarde is maar modifiedDatetimeEnd NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd groter dan of gelijk zijn aan de datum/tijd-waarde zijn geselecteerd. Wanneer modifiedDatetimeEnd een datum/tijd-waarde heeft maar modifiedDatetimeStart NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd kleiner zijn dan de datum/tijd-waarde zijn geselecteerd.
Deze eigenschap is niet van toepassing wanneer u configureert fileListPath.
Nee
modifiedDatetimeEnd Hetzelfde als hierboven. Nee
enablePartitionDiscovery Geef voor bestanden die zijn gepartitioneerd op of de partities van het bestandspad moeten worden geparseerd en als extra bronkolommen moeten worden toegevoegd.
Toegestane waarden zijn onwaar (standaard) en waar.
Nee
partitionRootPath Wanneer partitiedetectie is ingeschakeld, geeft u het absolute hoofdpad op om gepartitioneerde mappen als gegevenskolommen te lezen.

Als deze niet is opgegeven, is dit standaard het volgende:
- Wanneer u bestandspad gebruikt in de gegevensset of lijst met bestanden op de bron, is het pad naar de partitiehoofdmap dat is geconfigureerd in de gegevensset.
- Wanneer u het filter voor jokertekens gebruikt, is partitiehoofdpad het subpad vóór het eerste jokerteken.

Stel dat u het pad in de gegevensset configureert als 'root/folder/year=2020/month=08/day=27':
- Als u partitiehoofdpad opgeeft als root/folder/year=2020, genereert de kopieeractiviteit twee kolommen month en day met de waarde '08' en '27', naast de kolommen in de bestanden.
- Als het hoofdpad van de partitie niet is opgegeven, wordt er geen extra kolom gegenereerd.
Nee
maxConcurrent Verbinding maken ions De bovengrens van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken. Nee
disableChunking Bij het kopiëren van gegevens uit SFTP probeert de service eerst de lengte van het bestand op te halen, vervolgens het bestand te verdelen in meerdere onderdelen en deze parallel te lezen. Geef op of de SFTP-server ondersteuning biedt voor het ophalen van de bestandsgrootte of het lezen van een bepaalde offset.
Toegestane waarden zijn onwaar (standaard), waar.
Nee

Voorbeeld:

"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 als sink

Azure Data Factory ondersteunt de volgende bestandsindelingen. Raadpleeg elk artikel voor op indeling gebaseerde instellingen.

De volgende eigenschappen worden ondersteund voor SFTP onder storeSettings instellingen in een op indeling gebaseerde copy-sink:

Eigenschappen Beschrijving Vereist
type De eigenschap type onder storeSettings moet worden ingesteld op SftpWrite Instellingen. Ja
copyBehavior Definieert het kopieergedrag wanneer de bron bestanden is uit een gegevensarchief op basis van bestanden.

Toegestane waarden zijn:
- PreserveHierarchy (standaard): behoudt de bestandshiërarchie in de doelmap. Het relatieve pad van het bronbestand naar de bronmap is identiek aan het relatieve pad van het doelbestand naar de doelmap.
- FlattenHierarchy: Alle bestanden uit de bronmap bevinden zich op het eerste niveau van de doelmap. De doelbestanden hebben automatisch gegenereerde namen.
- MergeFiles: hiermee worden alle bestanden uit de bronmap samengevoegd tot één bestand. Als de bestandsnaam is opgegeven, is de naam van het samengevoegde bestand de opgegeven naam. Anders is het een automatisch gegenereerde bestandsnaam.
Nee
maxConcurrent Verbinding maken ions De bovengrens van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken. Nee
useTempFileRename Geef aan of u wilt uploaden naar tijdelijke bestanden en de naam ervan wilt wijzigen of rechtstreeks naar de doelmap of bestandslocatie wilt schrijven. Standaard schrijft de service eerst naar tijdelijke bestanden en wijzigt deze vervolgens wanneer het uploaden is voltooid. Deze reeks helpt (1) conflicten te voorkomen die kunnen leiden tot een beschadigd bestand als u andere processen hebt die naar hetzelfde bestand schrijven en (2) ervoor zorgen dat de oorspronkelijke versie van het bestand bestaat tijdens de overdracht. Als uw SFTP-server geen hernoembewerking ondersteunt, schakelt u deze optie uit en zorgt u ervoor dat u geen gelijktijdige schrijfbewerking naar het doelbestand hebt. Zie de tip voor probleemoplossing aan het einde van deze tabel voor meer informatie. Nee De standaardwaarde is true.
operationTimeout De wachttijd voordat er een time-out optreedt voor elke schrijfaanvraag naar de SFTP-server. De standaardwaarde is 60 min (01:00:00). Nee

Tip

Als u de fout UserErrorSftpPathNotFound, "UserErrorSftpPermissionDenied" of "SftpOperationFail" ontvangt wanneer u gegevens naar SFTP schrijft en de SFTP-gebruiker die u gebruikt wel over de juiste machtigingen beschikt , controleert u of de naamswijzigingsbewerking van uw SFTP-serverondersteuningsbestand werkt. Als dit niet het is, schakelt u de optie Uploaden met tijdelijk bestand (useTempFileRename) uit en probeert u het opnieuw. Zie de voorgaande tabel voor meer informatie over deze eigenschap. Als u een zelf-hostende Integration Runtime voor de Copy-activiteit gebruikt, moet u versie 4.6 of hoger gebruiken.

Voorbeeld:

"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"
                }
            }
        }
    }
]

Voorbeelden van map- en bestandsfilters

In deze sectie wordt het gedrag beschreven dat het resultaat is van het gebruik van jokertekenfilters met mappaden en bestandsnamen.

folderPath fileName Recursieve Structuur van bronmap en filterresultaat (bestanden vetgedrukt worden opgehaald)
Folder* (leeg, standaard gebruiken) false MapA
    Bestand1.csv
    Bestand2.json
    Submap1
        Bestand3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (leeg, standaard gebruiken) true MapA
    Bestand1.csv
    Bestand2.json
    Submap1
        Bestand3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false MapA
    Bestand1.csv
    Bestand2.json
    Submap1
        Bestand3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv true MapA
    Bestand1.csv
    Bestand2.json
    Submap1
        Bestand3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

Voorbeelden van bestandslijsten

In deze tabel wordt het gedrag beschreven dat het resultaat is van het gebruik van een bestandslijstpad in de Copy-activiteit bron. Hierbij wordt ervan uitgegaan dat u de volgende bronmapstructuur hebt en de bestanden wilt kopiëren die vet zijn:

Voorbeeldbronstructuur Inhoud in FileListToCopy.txt Azure Data Factory-configuratie
Root
    MapA
        Bestand1.csv
        Bestand2.json
        Submap1
            Bestand3.csv
            File4.json
            File5.csv
    Metagegevens
        FileListToCopy.txt
Bestand1.csv
Submap1/File3.csv
Submap1/File5.csv
In de gegevensset:
- Mappad: root/FolderA

In de Copy-activiteit bron:
- Pad naar bestandslijst: root/Metadata/FileListToCopy.txt

Het pad naar de bestandslijst verwijst naar een tekstbestand in hetzelfde gegevensarchief met een lijst met bestanden die u wilt kopiëren (één bestand per regel, met het relatieve pad naar het pad dat is geconfigureerd in de gegevensset).

Eigenschappen van toewijzingsgegevensstroom

Wanneer u gegevens transformeert in toewijzingsgegevensstromen, kunt u bestanden uit SFTP lezen en schrijven in de volgende indelingen:

Indelingsspecifieke instellingen bevinden zich in de documentatie voor die indeling. Zie Brontransformatie in toewijzingsgegevensstroom en Sink-transformatie in toewijzingsgegevensstroom voor meer informatie.

Notitie

Validatie van SSH-hostsleutels wordt nu niet ondersteund in de toewijzingsgegevensstroom.

Notitie

Voor toegang tot on-premises SFTP-server moet u Azure Data Factory of Synapse-werkruimte beheerd virtueel netwerk gebruiken met behulp van een privé-eindpunt. Raadpleeg deze zelfstudie voor gedetailleerde stappen.

Brontransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door de SFTP-bron. U kunt deze eigenschappen bewerken op het tabblad Bronopties . Wanneer u een inlinegegevensset gebruikt, ziet u aanvullende instellingen, die hetzelfde zijn als de eigenschappen die worden beschreven in de sectie eigenschappen van de gegevensset.

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Jokertekenpad Met behulp van een jokertekenpatroon wordt ADF geïnstrueerd om elke overeenkomende map en elk bestand in één brontransformatie te doorlopen. Dit is een effectieve manier om meerdere bestanden binnen één stroom te verwerken. Nee Tekenreeks[] jokertekenpaden
Hoofdpad partitie Als u mappen in uw bestandsbron hebt gepartitioneerd met een key=value indeling (bijvoorbeeld year=2019), kunt u het hoogste niveau van die partitiemapstructuur toewijzen aan een kolomnaam in uw gegevensstroomgegevensstroom. Nee String partitionRootPath
Geen bestanden gevonden toestaan Indien waar, wordt er geen fout gegenereerd als er geen bestanden worden gevonden. Nee true of false ignoreNoFilesFound
Lijst met bestanden Dit is een bestandsset. Maak een tekstbestand met een lijst met relatieve padbestanden die moeten worden verwerkt. Wijs dit tekstbestand aan. Nee true of false Bestandenoverzicht
Kolom voor het opslaan van de bestandsnaam Sla de naam van het bronbestand op in een kolom in uw gegevens. Voer hier een nieuwe kolomnaam in om de bestandsnaamtekenreeks op te slaan. Nee String rowUrlColumn
Na voltooiing Kies ervoor niets te doen met het bronbestand nadat de gegevensstroom is uitgevoerd, verwijder het bronbestand of verplaats het bronbestand. De paden voor de verplaatsing zijn relatief. Nee Verwijderen: true of false
Verplaatsen: ['<from>', '<to>']
purgeFiles
moveFiles
Filteren op laatst gewijzigd U kunt filteren welke bestanden u verwerkt door een datumbereik op te geven van wanneer ze voor het laatst zijn gewijzigd. Alle datums zijn in UTC. Nee Tijdstempel modifiedAfter
modifiedBefore

Voorbeeld van SFTP-bronscript

Wanneer u SFTP-gegevensset als brontype gebruikt, is het bijbehorende gegevensstroomscript:

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

Sinktransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door SFTP sink. U kunt deze eigenschappen bewerken op het tabblad Instellingen. Wanneer u een inlinegegevensset gebruikt, ziet u aanvullende instellingen, die hetzelfde zijn als de eigenschappen die worden beschreven in de sectie eigenschappen van de gegevensset.

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Ga naar de map Bepaalt of de doelmap al dan niet wordt gewist voordat de gegevens worden geschreven. Nee true of false truncate
Optie voor bestandsnaam De naamgevingsindeling van de geschreven gegevens. Standaard één bestand per partitie in indeling part-#####-tid-<guid>. Nee Patroon: Tekenreeks
Per partitie: Tekenreeks[]
Naambestand als kolomgegevens: Tekenreeks
Naammap als kolomgegevens: Tekenreeks
Uitvoer naar één bestand: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
Alles citeren Bepaalt of alle waarden tussen aanhalingstekens moeten worden geplaatst. Nee true of false quoteAll

Voorbeeld van SFTP-sinkscript

Wanneer u de SFTP-gegevensset als sinktype gebruikt, is het bijbehorende gegevensstroomscript:

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

Eigenschappen van opzoekactiviteit

Zie Lookup-activiteit voor informatie over eigenschappen van lookup-activiteiten.

Eigenschappen van GetMetadata-activiteit

Zie GetMetadata-activiteitsactiviteit voor informatie over eigenschappen van GetMetadata.

Activiteitseigenschappen verwijderen

Zie Activiteit verwijderen voor meer informatie over eigenschappen van Delete-activiteit.

Verouderde modellen

Notitie

De volgende modellen worden nog steeds ondersteund, net als voor achterwaartse compatibiliteit. U wordt aangeraden het eerder besproken nieuwe model te gebruiken, omdat de ontwerpgebruikersinterface is overgeschakeld naar het genereren van het nieuwe model.

Verouderd gegevenssetmodel

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de gegevensset moet worden ingesteld op FileShare. Ja
folderPath Het pad naar de map. Een jokertekenfilter wordt ondersteund. Toegestane jokertekens zijn * (komt overeen met nul of meer tekens) en ? (komt overeen met nul of één teken); gebruik ^ deze optie om te ontsnappen als uw werkelijke bestandsnaam een jokerteken of dit escapeteken bevat.

Voorbeelden: rootfolder/submap/, zie meer voorbeelden in voorbeelden van map- en bestandsfilters.
Ja
fileName Naam of jokertekenfilter voor de bestanden onder het opgegeven mapPath. Als u geen waarde voor deze eigenschap opgeeft, verwijst de gegevensset naar alle bestanden in de map.

Voor het filteren zijn * de toegestane jokertekens (komt overeen met nul of meer tekens) en ? (komt overeen met nul of één teken).
- Voorbeeld 1: "fileName": "*.csv"
- Voorbeeld 2: "fileName": "???20180427.txt"
Gebruik ^ deze optie om te escapen als de werkelijke mapnaam jokertekens heeft of dit escape-teken binnenin.
Nee
modifiedDatetimeStart Bestanden worden gefilterd op basis van het kenmerk Laatst gewijzigd. De bestanden worden geselecteerd als de laatste wijzigingstijd groter is dan of gelijk is aan modifiedDatetimeStart en kleiner is dan modifiedDatetimeEnd. De tijd wordt toegepast op de UTC-tijdzone in de notatie 2018-12-01T05:00:00Z.

De algehele prestaties van gegevensverplaatsing worden beïnvloed door deze instelling in te schakelen wanneer u een bestandsfilter wilt uitvoeren van grote aantallen bestanden.

De eigenschappen kunnen NULL zijn, wat betekent dat er geen bestandskenmerkfilter wordt toegepast op de gegevensset. Wanneer modifiedDatetimeStart een datum/tijd-waarde is maar modifiedDatetimeEnd NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd groter dan of gelijk zijn aan de datum/tijd-waarde zijn geselecteerd. Wanneer modifiedDatetimeEnd een datum/tijd-waarde heeft maar modifiedDatetimeStart NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd kleiner zijn dan de datum/tijd-waarde zijn geselecteerd.
Nee
modifiedDatetimeEnd Bestanden worden gefilterd op basis van het kenmerk Laatst gewijzigd. De bestanden worden geselecteerd als de laatste wijzigingstijd groter is dan of gelijk is aan modifiedDatetimeStart en kleiner is dan modifiedDatetimeEnd. De tijd wordt toegepast op de UTC-tijdzone in de notatie 2018-12-01T05:00:00Z.

De algehele prestaties van gegevensverplaatsing worden beïnvloed door deze instelling in te schakelen wanneer u een bestandsfilter wilt uitvoeren van grote aantallen bestanden.

De eigenschappen kunnen NULL zijn, wat betekent dat er geen bestandskenmerkfilter wordt toegepast op de gegevensset. Wanneer modifiedDatetimeStart een datum/tijd-waarde is maar modifiedDatetimeEnd NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd groter dan of gelijk zijn aan de datum/tijd-waarde zijn geselecteerd. Wanneer modifiedDatetimeEnd een datum/tijd-waarde heeft maar modifiedDatetimeStart NULL is, betekent dit dat de bestanden waarvan het kenmerk voor het laatst is gewijzigd kleiner zijn dan de datum/tijd-waarde zijn geselecteerd.
Nee
indeling Als u bestanden wilt kopiëren zoals tussen bestandsarchieven (binaire kopie), slaat u de indelingssectie over in definities van invoer- en uitvoergegevenssets.

Als u bestanden met een specifieke indeling wilt parseren, worden de volgende bestandstypen ondersteund: TextFormat, JsonFormat, AvroFormat, OrcFormat en ParquetFormat. Stel de typeeigenschap onder opmaak in op een van deze waarden. Zie de secties Tekstindeling, Json-indeling, Avro-indeling, Orc-indeling en Parquet-indeling voor meer informatie.
Nee (alleen voor binair kopieerscenario)
compressie Geef het type en het compressieniveau voor de gegevens op. Zie Ondersteunde bestandsindelingen en compressiecodecs voor meer informatie.
Ondersteunde typen zijn GZip, Deflate, BZip2 en ZipDeflate.
Ondersteunde niveaus zijn Optimaal en Snelste.
Nee

Tip

Als u alle bestanden onder een map wilt kopiëren, geeft u alleen folderPath op.
Als u één bestand met een opgegeven naam wilt kopiëren, geeft u folderPath op met het maponderdeel en fileName met de bestandsnaam.
Als u een subset van bestanden onder een map wilt kopiëren, geeft u folderPath op met het maponderdeel en fileName met het jokertekenfilter.

Notitie

Als u de eigenschap FileFilter voor het bestandsfilter gebruikte, wordt deze nog steeds ondersteund, maar we raden u aan de nieuwe filterfunctie te gebruiken die vanaf nu is toegevoegd aan fileName .

Voorbeeld:

{
    "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"
            }
        }
    }
}

Verouderd Copy-activiteit bronmodel

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de Copy-activiteit-bron moet worden ingesteld op FileSystemSource Ja
Recursieve Hiermee wordt aangegeven of de gegevens recursief worden gelezen uit de submappen of alleen uit de opgegeven map. Als recursief is ingesteld op true en de sink een archief op basis van bestanden is, worden lege mappen en submappen niet gekopieerd of gemaakt in de sink.
Toegestane waarden zijn waar (standaard) en onwaar
Nee
maxConcurrent Verbinding maken ions De bovengrens van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken. Nee

Voorbeeld:

"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>"
            }
        }
    }
]

Zie ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de Copy-activiteit.