Tekstindeling met scheidingstekens in Azure Data Factory en 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 .
Volg dit artikel als u de tekstbestanden met scheidingstekens wilt parseren of de gegevens wilt schrijven in een tekstindeling met scheidingstekens.
Tekstindeling met scheidingstekens wordt ondersteund voor de volgende connectors:
- Amazon S3
- Amazon S3-compatibele opslag
- Azure Blob
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- Bestandssysteem
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
Eigenschappen van gegevensset
Zie het artikel Gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets . Deze sectie bevat een lijst met eigenschappen die worden ondersteund door de gegevensset met scheidingstekens.
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de gegevensset moet worden ingesteld op DelimitedText. | Ja |
locatie | Locatie-instellingen van de bestanden. Elke op bestanden gebaseerde connector heeft een eigen locatietype en ondersteunde eigenschappen onder location . |
Ja |
columnDelimiter | De tekens die worden gebruikt om kolommen in een bestand te scheiden. De standaardwaarde is komma , . Wanneer het kolomscheidingsteken is gedefinieerd als lege tekenreeks, wat betekent dat er geen scheidingsteken is, wordt de hele regel als één kolom genomen.Op dit moment wordt kolomscheidingsteken als lege tekenreeks alleen ondersteund voor toewijzingsgegevensstroom, maar niet Copy-activiteit. |
Nee |
rowDelimiter | Voor Copy-activiteit wordt het enkele teken of \r\n gebruikt om rijen in een bestand te scheiden. De standaardwaarde is een van de volgende waarden die worden gelezen: ["\r\n", "\r", "\n"]; op schrijven: "\r\n". \r\n wordt alleen ondersteund in de kopieeropdracht. Voor de toewijzingsgegevensstroom worden de enkele of twee tekens gebruikt om rijen in een bestand te scheiden. De standaardwaarde is een van de volgende waarden die worden gelezen: ["\r\n", "\r", "\n"]; op schrijven: "\n". Wanneer het rijscheidingsteken is ingesteld op geen scheidingsteken (lege tekenreeks), moet het kolomscheidingsteken worden ingesteld als geen scheidingsteken (lege tekenreeks), wat betekent dat de hele inhoud als één waarde moet worden behandeld. Op dit moment wordt rijscheidingsteken als lege tekenreeks alleen ondersteund voor toewijzingsgegevensstroom, maar niet Copy-activiteit. |
Nee |
quoteChar | Het enkele teken om kolomwaarden aan te geven als het kolomscheidingsteken bevat. De standaardwaarde is dubbele aanhalingstekens " . Wanneer quoteChar is gedefinieerd als lege tekenreeks, betekent dit dat er geen aanhalingstekens en kolomwaarde niet tussen aanhalingstekens staan en escapeChar wordt gebruikt om het kolomscheidingsteken en zichzelf te ontsnappen. |
Nee |
escapeChar | Het enkele teken om aanhalingstekens binnen een aanhalingstekens te ontsnappen. De standaardwaarde is backslash \ . Wanneer escapeChar deze is gedefinieerd als lege tekenreeks, moet de quoteChar tekenreeks ook als lege tekenreeks worden ingesteld. In dat geval moet u ervoor zorgen dat alle kolomwaarden geen scheidingstekens bevatten. |
Nee |
firstRowAsHeader | Hiermee geeft u op of de eerste rij moet worden behandeld/als koptekstregel met namen van kolommen. Toegestane waarden zijn waar en onwaar (standaard). Wanneer de eerste rij als veldnamen onwaar is, worden kolomnamen automatisch gegenereerd als voorbeeld van ui-gegevens en opzoekactiviteit als Prop_{n} (beginnend vanaf 0), vereist kopieeractiviteit expliciete toewijzing van bron naar sink en zoekt u kolommen op rangschikken (beginnend vanaf 1), en toewijzingsgegevensstroomlijsten en zoekt u kolommen met de naam als Column_{n} (beginnend vanaf 1). |
Nee |
nullValue | Hiermee geeft u de tekenreeksweergave van null-waarde. De standaardwaarde is een lege tekenreeks. |
Nee |
encodingName | Het coderingstype dat wordt gebruikt voor het lezen/schrijven van testbestanden. Toegestane waarden zijn als volgt: "UTF-8","UTF-8 zonder BOM", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "US-ASCII", "UTF-7", "BIG5", "EUC-JP", "EUC-KR", "GB2312", "GB18030", "JOHAB", "SHIFT-JIS", "CP875", "CP866", "IBM00858", "IBM037", "IBM273", "IBM437", "IBM500", "IBM737", "IBM775", "IBM850", "IBM852", "IBM855", "IBM857", "IBM860", "IBM861", "IBM863", "IBM864", "IBM865", "IBM865", "IBM869", "IBM870", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "WINDOWS-874", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1255"2", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258". Opmerking: toewijzingsgegevensstroom biedt geen ondersteuning voor UTF-7-codering. Opmerking: toewijzingsgegevensstroom biedt geen ondersteuning voor UTF-8-codering met Byte Order Mark (BOM). |
Nee |
compressionCodec | De compressiecodec die wordt gebruikt voor het lezen/schrijven van tekstbestanden. Toegestane waarden zijn bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy of lz4. De standaardwaarde wordt niet gecomprimeerd. Opmerking momenteel Copy-activiteit geen ondersteuning biedt voor 'snappy' en 'lz4', en toewijzingsgegevensstroom biedt geen ondersteuning voor 'ZipDeflate', 'TarGzip' en 'Tar'. Opmerking wanneer u kopieeractiviteit gebruikt om ZipDeflate TarGzip/Tar-bestanden te decomprimeren /en schrijven naar een of meer op bestanden gebaseerde sinkgegevensopslag. Standaard worden bestanden uitgepakt in de map: <path specified in dataset>/<folder named as source compressed file>/ , gebruikt/preserveCompressionFileNameAsFolder preserveZipFileNameAsFolder u bij de kopieeractiviteitsbron om te bepalen of u de naam van de gecomprimeerde bestanden als mapstructuur wilt behouden. |
Nee |
compressionLevel | De compressieverhouding. Toegestane waarden zijn Optimaal of Snelste. - Snelste: De compressiebewerking moet zo snel mogelijk worden voltooid, zelfs als het resulterende bestand niet optimaal is gecomprimeerd. - Optimaal: De compressiebewerking moet optimaal worden gecomprimeerd, zelfs als het langer duurt om de bewerking te voltooien. Zie het onderwerp Compressieniveau voor meer informatie. |
Nee |
Hieronder ziet u een voorbeeld van een gegevensset met scheidingstekens in Azure Blob Storage:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"container": "containername",
"folderPath": "folder/subfolder",
},
"columnDelimiter": ",",
"quoteChar": "\"",
"escapeChar": "\"",
"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 tekstbron en sink met scheidingstekens.
Tekst met scheidingstekens als bron
De volgende eigenschappen worden ondersteund in de sectie kopieeractiviteit *source* .
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op DelimitedTextSource. | Ja |
formatSettings | Een groep eigenschappen. Raadpleeg de onderstaande tabel met leesinstellingen voor tekst met scheidingstekens. | Nee |
storeSettings | Een groep eigenschappen over het lezen van gegevens uit een gegevensarchief. Elke op bestanden gebaseerde connector heeft zijn eigen ondersteunde leesinstellingen onder storeSettings . |
Nee |
Ondersteunde leesinstellingen voor tekst met scheidingstekens onder formatSettings
:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | Het type formatSettings moet worden ingesteld op DelimitedTextReadSettings. | Ja |
skipLineCount | Geeft het aantal niet-lege rijen aan dat moet worden overgeslagen bij het lezen van gegevens uit invoerbestanden. Als zowel skipLineCount als firstRowAsHeader is opgegeven, worden de regels eerst overgeslagen en wordt de headerinformatie gelezen uit het invoerbestand. |
Nee |
compressionProperties | Een groep eigenschappen over het decomprimeren van gegevens voor een bepaalde compressiecodec. | Nee |
preserveZipFileNameAsFolder (onder compressionProperties ->type als ZipDeflateReadSettings ) |
Is van toepassing wanneer de invoergegevensset is geconfigureerd met ZipDeflate-compressie . Hiermee wordt aangegeven of de naam van het zip-bronbestand moet worden bewaard als mapstructuur tijdens het kopiëren. - Als deze is ingesteld op true (standaard), schrijft de service uitgepakte bestanden naar <path specified in dataset>/<folder named as source zip file>/ .- Als deze is ingesteld op onwaar, schrijft de service uitgepakte bestanden rechtstreeks naar <path specified in dataset> . Zorg ervoor dat u geen dubbele bestandsnamen in verschillende zip-bronbestanden hebt om racen of onverwacht gedrag te voorkomen. |
Nee |
preserveCompressionFileNameAsFolder (onder compressionProperties ->type als TarGZipReadSettings of TarReadSettings ) |
Is van toepassing wanneer de invoergegevensset is geconfigureerd met Tar-compressie van Tar./ Geeft aan of de gecomprimeerde bronbestandsnaam behouden moet blijven als mapstructuur tijdens het kopiëren. - Als deze is ingesteld op true (standaard), schrijft de service gedecomprimeerde bestanden naar <path specified in dataset>/<folder named as source compressed file>/ . - Als deze is ingesteld op onwaar, schrijft de service gedecomprimeerde bestanden rechtstreeks naar <path specified in dataset> . Zorg ervoor dat u geen dubbele bestandsnamen in verschillende bronbestanden hebt om racen of onverwacht gedrag te voorkomen. |
Nee |
"activities": [
{
"name": "CopyFromDelimitedText",
"type": "Copy",
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"storeSettings": {
"type": "AzureBlobStorageReadSettings",
"recursive": true
},
"formatSettings": {
"type": "DelimitedTextReadSettings",
"skipLineCount": 3,
"compressionProperties": {
"type": "ZipDeflateReadSettings",
"preserveZipFileNameAsFolder": false
}
}
},
...
}
...
}
]
Tekst met scheidingstekens als sink
De volgende eigenschappen worden ondersteund in de sectie kopieeractiviteit *sink* .
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op DelimitedTextSink. | Ja |
formatSettings | Een groep eigenschappen. Raadpleeg de tabel met instellingen voor tekst met scheidingstekens hieronder. | Nee |
storeSettings | Een groep eigenschappen over het schrijven van gegevens naar een gegevensarchief. Elke op bestanden gebaseerde connector heeft zijn eigen ondersteunde schrijfinstellingen onder storeSettings . |
Nee |
Ondersteunde instellingen voor het schrijven van tekst met scheidingstekens onder formatSettings
:
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | Het type formatSettings moet worden ingesteld op DelimitedTextWriteSettings. | Ja |
fileExtension | De bestandsextensie die wordt gebruikt om de uitvoerbestanden een naam te geven, bijvoorbeeld .csv , .txt . Deze moet worden opgegeven wanneer de fileName gegevens niet zijn opgegeven in de uitvoergegevensset DelimitedText. Wanneer de bestandsnaam is geconfigureerd in de uitvoergegevensset, wordt deze gebruikt als de naam van het sinkbestand en wordt de instelling voor de bestandsextensie genegeerd. |
Ja wanneer de bestandsnaam niet is opgegeven in de uitvoergegevensset |
maxRowsPerFile | Wanneer u gegevens in een map schrijft, kunt u ervoor kiezen om naar meerdere bestanden te schrijven en de maximumrijen per bestand op te geven. | Nee |
fileNamePrefix | Van toepassing wanneer maxRowsPerFile deze is geconfigureerd.Geef het voorvoegsel voor de bestandsnaam op bij het schrijven van gegevens naar meerdere bestanden, wat resulteert in dit patroon: <fileNamePrefix>_00000.<fileExtension> Als dit niet is opgegeven, wordt het voorvoegsel van de bestandsnaam automatisch gegenereerd. Deze eigenschap is niet van toepassing wanneer de bron een op bestanden gebaseerd archief of gegevensarchief met partitieopties is. |
Nee |
Eigenschappen van toewijzingsgegevensstroom
In toewijzingsgegevensstromen kunt u de tekstindeling met scheidingstekens lezen en schrijven in de volgende gegevensarchieven: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 en SFTP, en u kunt de tekstindeling met scheidingstekens lezen in Amazon S3.
Inlinegegevensset
Toewijzingsgegevensstromen ondersteunen 'inlinegegevenssets' als optie voor het definiëren van uw bron en sink. Een inline gescheiden gegevensset wordt rechtstreeks in de bron- en sinktransformaties gedefinieerd en wordt niet gedeeld buiten de gedefinieerde gegevensstroom. Het is handig om gegevensseteigenschappen rechtstreeks in uw gegevensstroom te parameteriseren en kan profiteren van verbeterde prestaties van gedeelde ADF-gegevenssets.
Wanneer u grote aantallen bronmappen en bestanden leest, kunt u de prestaties van de detectie van gegevensbestanden verbeteren door de optie 'Door gebruiker geprojecteerd schema' in de projectie in te stellen | Dialoogvenster Schemaopties. Met deze optie wordt de automatische detectie van het standaardschema van ADF uitgeschakeld en worden de prestaties van bestandsdetectie aanzienlijk verbeterd. Voordat u deze optie instelt, moet u ervoor zorgen dat u de projectie importeert, zodat ADF een bestaand schema voor projectie heeft. Deze optie werkt niet met schemadrift.
Broneigenschappen
De onderstaande tabel bevat de eigenschappen die worden ondersteund door een tekstbron met scheidingstekens. U kunt deze eigenschappen bewerken op het tabblad Bronopties .
Name | Beschrijving | Vereist | Toegestane waarden | Eigenschap gegevensstroomscript |
---|---|---|---|---|
Paden met jokertekens | Alle bestanden die overeenkomen met het jokertekenpad worden verwerkt. Hiermee overschrijft u de map en het bestandspad dat is ingesteld in de gegevensset. | nee | Tekenreeks[] | jokertekenpaden |
Hoofdpad voor partitie | Voor bestandsgegevens die zijn gepartitioneerd, kunt u een partitiehoofdpad invoeren om gepartitioneerde mappen als kolommen te lezen | nee | String | partitionRootPath |
Lijst met bestanden | Of uw bron verwijst naar een tekstbestand waarin bestanden worden vermeld die moeten worden verwerkt | nee | true of false |
fileList |
Tekst met meerdere regels | Bevat het bronbestand rijen die meerdere regels omvatten. Waarden met meerdere regels moeten tussen aanhalingstekens staan. | nee true of false |
multiLineRow | |
Kolom voor het opslaan van de bestandsnaam | Een nieuwe kolom maken met de naam en het pad van het bronbestand | nee | String | rowUrlColumn |
Na voltooiing | Verwijder of verplaats de bestanden na verwerking. Bestandspad begint vanuit de hoofdmap van de container | nee | Verwijderen: true of false Bewegen: ['<from>', '<to>'] |
purgeFiles moveFiles |
Filteren op laatst gewijzigd | Kiezen om bestanden te filteren op basis van wanneer ze voor het laatst zijn gewijzigd | nee | Tijdstempel | modifiedAfter modifiedBefore |
Geen bestanden gevonden toestaan | Indien waar, wordt er geen fout gegenereerd als er geen bestanden worden gevonden | nee | true of false |
ignoreNoFilesFound |
Maximum aantal kolommen | De standaardwaarde is 20480. Deze waarde aanpassen wanneer het kolomnummer meer dan 20480 is | nee | Geheel getal | maxColumns |
Notitie
Ondersteuning voor gegevensstroombronnen voor een lijst met bestanden is beperkt tot 1024 vermeldingen in uw bestand. Als u meer bestanden wilt opnemen, gebruikt u jokertekens in de lijst met bestanden.
Bronvoorbeeld
De onderstaande afbeelding is een voorbeeld van een configuratie van een tekstbron met scheidingstekens in toewijzingsgegevensstromen.
Het gekoppelde gegevensstroomscript is:
source(
allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: false,
multiLineRow: true,
wildcardPaths:['*.csv']) ~> CSVSource
Notitie
Gegevensstroombronnen ondersteunen een beperkte set Linux-globbing die wordt ondersteund door Hadoop-bestandssystemen
Sink-eigenschappen
De onderstaande tabel bevat de eigenschappen die worden ondersteund door een tekstsink met scheidingstekens. U kunt deze eigenschappen bewerken op het tabblad Instellingen .
Name | Beschrijving | Vereist | Toegestane waarden | Eigenschap gegevensstroomscript |
---|---|---|---|---|
Ga naar de map | Als de doelmap is gewist voordat u gaat schrijven | 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 Uitvoer naar één bestand: ['<fileName>'] Naammap als kolomgegevens: Tekenreeks |
filePattern partitionFileNames rowUrlColumn partitionFileNames rowFolderUrlColumn |
Alles citeren | Alle waarden tussen aanhalingstekens plaatsen | nee | true of false |
quoteAll |
Koptekst | Klantheaders toevoegen aan uitvoerbestanden | nee | [<string array>] |
koptekst |
Sink-voorbeeld
De onderstaande afbeelding is een voorbeeld van een configuratie van een tekstsink met scheidingstekens in toewijzingsgegevensstromen.
Het gekoppelde gegevensstroomscript is:
CSVSource sink(allowSchemaDrift: true,
validateSchema: false,
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> CSVSink
Gerelateerde connectors en indelingen
Hier volgen enkele algemene connectors en indelingen met betrekking tot de tekstindeling met scheidingstekens:
- Azure Blob-opslag
- Binaire indeling
- Dataverse
- Delta-indeling
- Excel-indeling
- Bestandssysteem
- FTP
- HTTP
- JSON-indeling
- Parquet-indeling