Delen via


from_csv-functie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Retourneert een struct-waarde met de csvStr en schema.

Syntaxis

from_csv(csvStr, schema [, options])

Argumenten

  • csvStr: Een TEKENREEKS-expressie die een rij met CSV-gegevens opgeeft.
  • schema: een letterlijke tekenreeks of aanroep van schema_of_csv functie.
  • options: Een optionele MAP<STRING, letterlijke tekenreeks> die instructies specificeert.

Retouren

Een STRUCT met veldnamen en -typen die overeenkomen met de schema definitie.

csvStr moet goed worden gevormd met betrekking tot de schema en options. schema moet worden gedefinieerd als door komma's gescheiden column naam- en gegevenstypeparen, zoals wordt gebruikt in bijvoorbeeld CREATE TABLE.

options, indien opgegeven, kan een van de volgende zijn:

  • sep (standaard ,): stelt een scheidingsteken in voor elk veld en elke waarde. Dit scheidingsteken kan een of meer tekens zijn.
  • encoding (standaard UTF-8): decodeert de CSV-bestanden op basis van het opgegeven coderingstype.
  • quote (standaard "): stelt één teken in dat wordt gebruikt voor escape-aanhalingstekens valueswhere het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet set een lege tekenreeks zijn in plaats van null. Dit gedrag verschilt van com.databricks.spark.csv.
  • escape (standaard \): hiermee stelt u één teken in dat wordt gebruikt voor escape-aanhalingstekens binnen een al aanhalingstekens.
  • charToEscapeQuoteEscaping (standaard escape of \0): stelt één teken in dat wordt gebruikt om de escape voor het aanhalingsteken te ontsnappen. De standaardwaarde is escapeteken wanneer escape en quote tekens verschillen, \0 anders.
  • comment (standaard lege tekenreeks): hiermee stelt u één teken in dat wordt gebruikt voor het overslaan van regels die beginnen met dit teken. Dit is standaard uitgeschakeld.
  • header (standaard false): gebruikt de eerste regel als de namen van columns.
  • enforceSchema (standaard-true): als deze set waar is, wordt de opgegeven of afgeleide schema geforceerd toegepast op gegevensbronbestanden en worden headers in CSV-bestanden genegeerd. Als de optie set op onwaar staat, wordt de schema gevalideerd ten opzichte van alle headers in CSV-bestanden, in het geval dat de headeroptie set op waar staat. Veldnamen schema en column in de CSV-koppen worden op hun posities gecontroleerd, rekening houdend met spark.sql.caseSensitive. Hoewel de standaardwaarde waar is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen.
  • inferSchema (standaard false): bepaalt automatisch de invoer schema uit gegevens. Hiervoor is één extra pass over de gegevens vereist.
  • samplingRatio (standaard 1.0): definieert de fractie van rijen die worden gebruikt voor het afleiden van schema.
  • ignoreLeadingWhiteSpace (standaard false): een indicator die aangeeft of voorloopspaties van values die gelezen worden, moeten worden overgeslagen of niet.
  • ignoreTrailingWhiteSpace (standaard false): een vlag die aangeeft of de slepende spaties van values tijdens het lezen al dan niet moeten worden overgeslagen.
  • nullValue (standaard lege tekenreeks): stelt de tekenreeksweergave van een null-waarde in.
  • emptyValue (standaard lege tekenreeks): stelt de tekenreeksweergave van een lege waarde in.
  • nanValue (standaard NaN): stelt de tekenreeksweergave van een niet-numerieke waarde in.
  • positiveInf (standaard Inf): stelt de tekenreeksweergave van een positieve oneindigheidswaarde in.
  • negativeInf (standaard -Inf): stelt de tekenreeksweergave van een negatieve oneindigheidswaarde in.
  • dateFormat (standaard yyyy-MM-dd): stelt de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het datumtype.
  • timestampFormat (standaard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): stelt de tekenreeks in die een tijdstempelnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type tijdstempel.
  • maxColumns (standaard 20480): definieert een harde limit van het aantal columns dat een record kan hebben.
  • maxCharsPerColumn (standaard -1): definieert het maximum aantal tekens dat is toegestaan voor elke opgegeven waarde die wordt gelezen. Standaard is het -1 wat een onbeperkte lengte betekent
  • unescapedQuoteHandling (standaard STOP_AT_DELIMITER): definieert hoe de CSV-parser values verwerkt met niet-ontsnapte aanhalingstekens.
    • STOP_AT_CLOSING_QUOTE: Als er onopgezichtige aanhalingstekens worden gevonden in de invoer, verzamelt u het aanhalingsteken en gaat u verder met het parseren van de waarde als een aanhalingsteken, totdat er een aanhalingsteken wordt gevonden.
    • BACK_TO_DELIMITER: Als er onopgemerkte aanhalingstekens worden gevonden in de invoer, kunt u de waarde beschouwen als een niet-aanhalingsteken. Hierdoor verzamelt de parser alle tekens van de huidige geparseerde waarde totdat het scheidingsteken is gevonden. Als er geen scheidingsteken in de waarde wordt gevonden, blijft de parser tekens uit de invoer accumuleren totdat een scheidingsteken of regeleinde is gevonden.
    • STOP_AT_DELIMITER: Als er onopgemerkte aanhalingstekens worden gevonden in de invoer, kunt u de waarde beschouwen als een niet-aanhalingsteken. Hierdoor verzamelt de parser alle tekens totdat het scheidingsteken of het einde van een regel in de invoer wordt gevonden.
    • STOP_AT_DELIMITER: Als er niet-gescaped aanhalingstekens worden gevonden in de invoer, wordt de inhoud voor de gespecificeerde waarde overgeslagen en wordt in plaats daarvan de waarde set in nullValue geproduceerd.
    • RAISE_ERROR: Als er onopgezichtige aanhalingstekens worden gevonden in de invoer, wordt er een TextParsingException gegenereerd.
  • mode (standaard PERMISSIVE): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren. Het ondersteunt de volgende hoofdlettergevoelige modi. Spark probeert alleen de vereiste columns in CSV te parseren tijdens het snoeien van column. Beschadigde records kunnen daarom verschillen op basis van de vereiste set velden. Dit gedrag kan worden beheerd door spark.sql.csv.parser.columnPruning.enabled (standaard ingeschakeld).
    • PERMISSIVE: wanneer deze voldoet aan een beschadigde record, plaatst u de ongeldige tekenreeks in een veld dat is geconfigureerd door columnNameOfCorruptRecorden stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kan een gebruiker een tekenreekstypeveld met de naam columnNameOfCorruptRecord set in een door de gebruiker gedefinieerde schema. Als een schema het veld niet heeft, worden corrupte records verwijderd tijdens het parseren. Een record met minder of meer tokens dan schema is geen beschadigde record naar CSV. Wanneer deze voldoet aan een record having minder tokens dan de lengte van de schema, wordt null ingesteld op extra velden. Wanneer de records meer tokens hebben dan de lengte van de schema, laat het extra tokens vallen.
    • FAILFAST: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
  • columnNameOfCorruptRecord (standaard is de waarde die is opgegeven in spark.sql.columnNameOfCorruptRecord): staat het wijzigen van de naam van het nieuwe veld toe having ongeldige tekenreeks die is gemaakt door PERMISSIVE modus. Dit overschrijft spark.sql.columnNameOfCorruptRecord.
  • multiLine (standaard false): parseert één record, die meerdere regels kan omvatten.
  • locale (standaard en-US): stelt een landinstelling in als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels.
  • lineSep (standaard dekt alle \r, \r\nen \n): definieert het regelscheidingsteken dat moet worden gebruikt voor parseren. De maximale lengte is 1 teken.
  • pathGlobFilter: een optioneel glob-patroon om alleen bestanden op te nemen met paden die overeenkomen met het patroon. De syntaxis volgt org.apache.hadoop.fs.GlobFilter. Het gedrag van partition detectie wordt niet gewijzigd.

Voorbeelden

> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
 {1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {"time":2015-08-26 00:00:00}