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) | (1) (2) |
Toewijzingsgegevensstroom (bron/sink) | (1) |
Activiteit Lookup | (1) (2) |
GetMetadata-activiteit | (1) (2) |
Activiteit verwijderen | (1) (2) |
(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:
- Het hulpprogramma voor het kopiëren van gegevens
- Azure Portal
- De .NET-SDK
- De Python-SDK
- Azure PowerShell
- De REST API
- Een Azure Resource Manager-sjabloon
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.
Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:
Zoek naar SFTP en selecteer de SFTP-connector.
Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.
Configuratiedetails van connector
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 . |
wachtwoordzin | 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.
- Avro-indeling
- Binaire indeling
- Tekstindeling met scheidingstekens
- Excel-indeling
- JSON-indeling
- ORC-indeling
- Parquet-indeling
- XML-indeling
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.
- Avro-indeling
- Binaire indeling
- Tekstindeling met scheidingstekens
- Excel-indeling
- JSON-indeling
- ORC-indeling
- Parquet-indeling
- XML-indeling
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 SftpReadSettings. |
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 | ||
recursief | 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 |
maxConcurrentConnections | 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.
- Avro-indeling
- Binaire indeling
- Tekstindeling met scheidingstekens
- JSON-indeling
- ORC-indeling
- Parquet-indeling
De volgende eigenschappen worden ondersteund voor SFTP onder storeSettings
instellingen in een op indeling gebaseerde copy-sink:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap onder storeSettings moet worden ingesteld op SftpWriteSettings. |
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 |
maxConcurrentConnections | 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 | recursief | Structuur van bronmap en filterresultaat (bestanden vetgedrukt worden opgehaald) |
---|---|---|---|
Folder* |
(leeg, standaard gebruiken) | false | MapA File1.csv File2.json Submap1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
(leeg, standaard gebruiken) | true | MapA File1.csv File2.json Submap1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
false | MapA File1.csv File2.json Submap1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
true | MapA File1.csv File2.json Submap1 File3.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 |
---|---|---|
wortel MapA File1.csv File2.json Submap1 File3.csv File4.json File5.csv Metagegevens FileListToCopy.txt |
File1.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 |
fileList |
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 Bewegen: ['<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 |
recursief | 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 |
maxConcurrentConnections | 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>"
}
}
}
]
Gerelateerde inhoud
Zie ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de Copy-activiteit.