Delen via


Gegevens parseren

van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Gegevensstromen in pakketten extraheren en laden gegevens tussen heterogene gegevensarchieven, die verschillende standaard- en aangepaste gegevenstypen kunnen gebruiken. In een gegevensstroom doen Integration Services-bronnen het werk van het extraheren van gegevens, het parseren van tekenreeksgegevens en het converteren van gegevens naar een Integration Services-gegevenstype. Volgende transformaties kunnen gegevens parseren om deze te converteren naar een ander gegevenstype of kolomkopieën maken met verschillende gegevenstypen. Expressies die in onderdelen worden gebruikt, kunnen ook argumenten en operanden casten naar verschillende gegevenstypen. Ten slotte kan de bestemming, wanneer de gegevens in een gegevensarchief worden geladen, de gegevens parseren om deze te converteren naar een gegevenstype dat door de bestemming wordt gebruikt. Zie Integration Services-gegevenstypenvoor meer informatie.

Twee soorten parseren

Integration Services biedt twee soorten parsering voor het converteren van gegevens: Fast parse en Standard parse.

  • Snelle parsering is een snelle, eenvoudige set parseringsroutines die geen ondersteuning biedt voor landinstellingenspecifieke conversies van gegevenstypen en ondersteunt alleen de meest gebruikte datum- en tijdnotaties.

  • Standaard parsing is een uitgebreide set parseringsroutines die ondersteuning bieden voor alle gegevenstypeconversies die worden geleverd door de API's voor conversie van het Automation-gegevenstype die beschikbaar zijn in Oleaut32.dll en Ole2dsip.dll.

Snel parseren

Snelle parsering biedt een snelle, eenvoudige set routines voor het parseren van gegevens. Deze routines zijn niet landinstellingengevoelig en ondersteunen alleen een subset van datum-, tijd- en gehele getalnotaties.

Vereisten en beperkingen

Door snelle parsing te implementeren, verliest een pakket zijn vermogen om datum-, tijd- en numerieke gegevens te interpreteren in indelingen die specifiek zijn voor de landinstelling en in veelgebruikte ISO 8601-basis- en uitgebreide formaten. Echter, het pakket verbetert hierdoor wel de prestaties. Snelle parsering ondersteunt bijvoorbeeld alleen de meest gebruikte datumnotatieweergaven zoals JJJJMMDD en JJJJ-MM-DD, voert geen landinstellingenspecifieke parsering uit, herkent geen speciale tekens in valutagegevens en kan hexadecimale of wetenschappelijke representatie van gehele getallen niet converteren.

Snelle parsing is alleen beschikbaar wanneer u de Flat File-bron of de gegevensconversietransformatie gebruikt. De toename van de prestaties kan aanzienlijk zijn en u moet overwegen om snel parseren in deze gegevensstroomonderdelen te gebruiken, indien mogelijk.

Als voor de gegevensstroom in het pakket landinstellingsgevoelige parsering is vereist, wordt standaardparse aanbevolen in plaats van snel parseren. Snelle parsering herkent bijvoorbeeld geen landinstellingengevoelige gegevens die decimale symbolen bevatten, zoals de komma, datumnotaties anders dan jaar-maand-datumnotaties en valutasymbolen.

Afgekapte representaties die een of meer datumonderdelen impliceren, zoals een eeuw, een jaar of een maand, worden niet herkend door snelle parsering. Snelle parsering herkent bijvoorbeeld niet de notatie -JJMM, die een jaar en maand in een impliciete eeuw aangeeft, noch '--MM', waarmee een maand in een impliciet jaar wordt opgegeven. Sommige representaties met verminderde precisie worden echter herkend. Snelle parsering herkent bijvoorbeeld de indeling 'hhmm;', die alleen uur en minuut aangeeft en 'JJJJ', wat alleen het jaar aangeeft.

Snelle parsering wordt opgegeven op kolomniveau. In de Flat File-bron en de gegevensconversietransformatie kunt u Snelle parsing inschakelen voor uitvoerkolommen. Invoer en uitvoer kunnen zowel localegevoelige als niet-localegevoelige kolommen bevatten.

Numerieke gegevensindelingen (Snel parseren)

Snelle parsering biedt een snelle, eenvoudige, landinstellingonafhankelijke set routines voor het parseren van gegevens. Snelle parsering ondersteunt slechts een beperkte set indelingen voor gehele gegevenstypen.

Integer datatype

De gegevenstypen voor gehele getallen die Integration Services biedt, zijn DT_I1, DT_UI1, DT_I2, DT_UI2, DT_I4, DT_UI4, DT_I8 en DT_UI8. Zie Integration Services-gegevenstypenvoor meer informatie.

Fast parse ondersteunt de volgende indelingen voor gegevenstypen voor gehele getallen:

  • Nul of meer voorloop- en volgspaties of tabstops. De waarde 123 is bijvoorbeeld geldig. Een waarde die alle spaties oplevert, resulteert in nul.

  • Een voorloop plusteken, minteken of geen van beide. De waarden +123, -123 en 123 zijn bijvoorbeeld geldig.

  • Een of meer Hindu-Arabic cijfers (0-9). De waarde 345 is bijvoorbeeld geldig. Andere taalnumerals worden niet ondersteund.

Niet-ondersteunde gegevensindelingen zijn onder andere:

  • Speciale tekens. Het valutateken $ wordt bijvoorbeeld niet ondersteund en de waarde $20 kan niet worden geparseerd.

  • Spatietekens zoals regelinvoer, regelterugloop en niet-brekende spaties. De waarde 123 kan bijvoorbeeld niet worden geparseerd.

  • Hexadecimale representaties van gehele getallen. De waarde 2EE kan bijvoorbeeld niet worden geparseerd.

  • Wetenschappelijke notatie van gehele getallen. De waarde 1E+10 kan bijvoorbeeld niet worden geparseerd.

De volgende indelingen zijn uitvoergegevensindelingen voor gehele getallen:

  • Een minteken voor negatieve getallen en niets voor positieve getallen.

  • Geen witruimtes.

  • Een of meer Hindu-Arabic cijfers (0-9).

Datum- en tijdnotaties (Snel parseren)

Snelle parsering biedt een snelle, eenvoudige set routines voor het parseren van gegevens. Fast parse ondersteunt de volgende notaties voor datum- en tijdgegevenstypen.

Datumgegevenstype

Fast parse ondersteunt de volgende tekenreeksindelingen voor datumgegevens:

  • Datumnotaties met voorloopspaties. De waarde 2004- 02-03 is bijvoorbeeld geldig.

  • ISO 8601-indelingen, zoals vermeld in de volgende tabel:

    Formaat Description
    JJJJMMDD

    YYYY-MM-DD
    Eenvoudige en uitgebreide notaties voor een jaar met vier cijfers, een maand van twee cijfers en een dag met twee cijfers. In de uitgebreide notatie worden de datumonderdelen gescheiden door een afbreekstreepje (-).
    YYYY-MM Eenvoudige en uitgebreide verkorte precisienotaties voor een jaar van vier cijfers en een maand met twee cijfers. In de uitgebreide notatie worden de datumonderdelen gescheiden door een afbreekstreepje (-).
    JJJJ Formaat met verminderde precisie is een viercijferig jaar.

Snelle parsing biedt geen ondersteuning voor de volgende formaten voor datumgegevens:

  • Alfabetische maandwaarden. De datumnotatie okt-31-2003 is bijvoorbeeld ongeldig.

  • Dubbelzinnige notaties zoals DD-MM-YYYY en MM-DD-JJJJ. De datums 03-04-1995 en 04-03-1995 zijn bijvoorbeeld ongeldig.

  • Eenvoudige en uitgebreide afgekapte notaties voor een kalenderjaar van vier cijfers en een driecijferige dag binnen een jaar, JJJJDDD en JJJJ-DDD.

  • Basis- en uitgebreide notaties voor een jaar met vier cijfers, een tweecijferig getal voor de week van het jaar en een eencijferig getal voor de dag van de week, YYYYWwwD en YYYY-Www-D

  • Eenvoudige en uitgebreide afgekorte notaties voor een jaar- en weekdatum zijn een jaar met vier cijfers en een tweecijferig getal voor de week, YYYY-Www en YYYY-Www

Met snelle parsing worden de gegevens als DT_DBDATE uitgevoerd. Datumwaarden worden aangevuld wanneer ze zijn ingekort. JJJJ wordt bijvoorbeeld YYYY0101.

Zie Integration Services-gegevenstypenvoor meer informatie.

Tijdgegevenstype

Fast parse ondersteunt de volgende tekenreeksindelingen voor tijdgegevens:

  • Tijdnotaties met voorloopspaties. De waarde 10:24 is bijvoorbeeld geldig.

  • 24-uursindeling. Snelle parsering biedt geen ondersteuning voor de AM- en PM-notatie.

  • ISO 8601-tijdnotaties, zoals vermeld in de volgende tabel:

    Formaat Description
    HHMISS

    uu:mm:ss
    Eenvoudige en uitgebreide notaties voor een uur van twee cijfers, een minuut van twee cijfers en een seconde van twee cijfers. In de uitgebreide indeling worden de tijddelen gescheiden door een dubbele punt (:).
    HHMI

    UU:MM
    Basale en uitgebreide verkorte notatie voor twee cijfers voor het uur en twee cijfers voor de minuten. In de uitgebreide indeling worden de tijddelen gescheiden door een dubbele punt (:).
    HH Verkorte notatie voor een twee-cijferig uur.
    00:00:00

    000000

    0000

    00

    240000

    24:00:00

    2400

    24
    Het formaat voor middernacht.
  • Tijdnotaties die een tijdzone opgeven, zoals vermeld in de volgende tabel:.

    Formaat Description
    +HH:MI

    +HHMI
    Basis- en uitgebreide indelingen die aangeven hoeveel uren en minuten worden toegevoegd aan Coordinated Universal Time (UTC) om de lokale tijd te verkrijgen.
    -UU:MM

    -HHMI
    Basis- en uitgebreide notaties die aangeven hoeveel uren en minuten worden afgetrokken van UTC om de lokale tijd te verkrijgen.
    +HH Afgekapte notatie die het aantal uren aangeeft dat aan UTC wordt toegevoegd om de lokale tijd te verkrijgen.
    -HH Afgekapte notatie die het aantal uren aangeeft dat van UTC wordt afgetrokken om de lokale tijd te verkrijgen.
    Z Een waarde van 0 die aangeeft dat de tijd wordt weergegeven in UTC.

    De notaties voor alle tijd- en datum-/tijdgegevens kunnen een tijdzone-element bevatten. Het systeem negeert echter de tijdzonewaarde, behalve wanneer de gegevens van het type DT_DBTIMESTAMPOFFSET zijn. Zie Integration Services-gegevenstypenvoor meer informatie.

    In indelingen die een tijdzone-element bevatten, is er geen ruimte tussen het tijdelement en het tijdzone-element, zoals wordt weergegeven in het volgende voorbeeld:

    HH:MI:SS[+HH:MI]

    De vierkante haken in het vorige voorbeeld geven aan dat de tijdzonewaarde optioneel is.

  • Tijdnotaties die een decimale breuk bevatten, zoals vermeld in de volgende tabel:

    Formaat Description
    HH[.nnnnnnn] n is een waarde tussen 0 en 9999999 die een fractie van uren vertegenwoordigt. De haakjes geven aan dat deze waarde optioneel is.

    De waarde 12,750 geeft bijvoorbeeld 12:45 aan.
    HHMI[.nnnnnnn]

    HH:MI[.nnnnnnn]
    n is een waarde tussen 0 en 9999999 die een fractie van minuten vertegenwoordigt. De haakjes geven aan dat deze waarde optioneel is.

    De waarde 1220.500 geeft bijvoorbeeld 12:20:30 aan.
    HJMSS[.nnnnnnnn]

    UU:MI:SS[.nnnnnnnn]
    n is een waarde tussen 0 en 9999999 die een fractie van seconden vertegenwoordigt. De haakjes geven aan dat deze waarde optioneel is.

    De waarde 122040.250 geeft bijvoorbeeld 12:20:40,15 aan.

    Opmerking

    Het breukscheidingsteken voor de tijdnotaties in de vorige tabel kan een decimaal of komma zijn.

  • Tijdwaarden die een schrikkelseconde bevatten, zoals wordt weergegeven in de volgende voorbeelden:

    23:59:60[.0000000]

    235960[.0000000]

De functie 'Fast parse' zet de tekenreeksen om naar DT_DBTIME en DT_DBTIME2. Tijdwaarden in afgekapte indelingen worden opgevuld. HH:MI wordt bijvoorbeeld HH:MM:00.000.

Zie Integration Services-gegevenstypenvoor meer informatie.

Gegevenstype Datum/tijd

Fast parse ondersteunt de volgende tekenreeksindelingen voor datum/tijd-gegevens:

  • Indelingen met voorloopspaties. De waarde 2003-01-10T203910 is bijvoorbeeld geldig.

  • Combinaties van geldige datumnotaties en geldige tijdnotaties gescheiden door een hoofdletter T en geldige tijdzone-indelingen, zoals JJJJMMDDT[HJMSS][+HH:MI]. De tijd- en tijdzonewaarden zijn niet vereist. Bijvoorbeeld: '2003-10-14' is geldig.

Snelle parsering biedt geen ondersteuning voor tijdsintervallen. Een tijdsinterval dat wordt geïdentificeerd door een begin- en einddatum en -tijd in de notatie JJJJMMDDThhmmss/JJJJMMDDThhmmss kunnen niet worden geparseerd.

De snel parserende uitvoer van tekenreeksen is als DT_DATE, DT_DBTIMESTAMP, DT_DBTIMESTAMP2 en DT_DBTIMESTAMPOFFSET. Datum-/tijdwaarden in verkorte notaties worden opgevuld. De volgende tabel bevat de waarden die worden toegevoegd voor ontbrekende datum- en tijdonderdelen.

Datum/tijd-onderdeel Opvulling
Seconden Voeg 00 toe.
Notulen Voeg 00:00 uur toe.
Uur Voeg 00:00:00 toe.
Day Voeg 01 toe voor de dag van de maand.
Maand Voeg 01 toe voor de maand van het jaar.

Zie Integration Services-gegevenstypenvoor meer informatie.

Snel parseren inschakelen

De eigenschap snelle parsering moet worden ingesteld voor elke kolom van de bron of transformatie die gebruikmaakt van snelle parsering. Gebruik de geavanceerde editor van de Flat File-bron en de Gegevensconversie-transformatie om de eigenschap in te stellen.

  1. Klik met de rechtermuisknop op de transformatie van de platte bestandsbron of gegevensconversie en klik vervolgens op Geavanceerde editor weergeven.

  2. Klik in het dialoogvenster Geavanceerde editor op het tabblad Invoer- en uitvoereigenschappen .

  3. Klik in het deelvenster Invoer en uitvoer op de kolom waarvoor u snel parseren wilt inschakelen.

  4. Vouw in het venster Eigenschappen het knooppunt Aangepaste eigenschappen uit en stel de eigenschap FastParse in op True.

  5. Klik op OK.

Standaardparse

Standaardparser is een lokaal-gevoelige reeks parseerroutines die ondersteuning bieden voor alle conversies van gegevenstypen die worden geleverd door de API's voor gegevenstypeconversie van Automation die beschikbaar zijn in Oleaut32.dll en Ole2dsip.dll. Standaardparse is gelijk aan de OLE DB-parserings-API's.

Standard parse biedt ondersteuning voor het converteren van gegevenstypen van internationale gegevens en moet worden gebruikt als de gegevensindeling niet wordt ondersteund door Fast parse.