from_csv Functie

Van toepassing op:gemarkeerd met ja Databricks SQL-controle gemarkeerd als ja Databricks Runtime

Retourneert een struct-waarde met de csvStr en schema.

Syntaxis

from_csv(csvStr, schema [, options])

Argumenten

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

Retourneert

Een STRUCT met veldnamen en typen die overeenkomen met de schemadefinitie.

csvStr moet goed zijn gevormd met betrekking tot en schemaoptions. schema moet worden gedefinieerd als door komma's gescheiden kolomnaam en gegevenstypeparen, zoals 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 uit een of meer tekens bestaan.
  • encoding (standaard UTF-8): decodeert de CSV-bestanden met het opgegeven coderingstype.
  • quote (standaard "): stelt één teken in dat wordt gebruikt voor het ontsnappen van waarden tussen aanhalingstekens, waarbij het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet u niet null instellen, maar een lege tekenreeks. Dit gedrag verschilt van com.databricks.spark.csv.
  • escape (standaard \): hiermee stelt u één teken in dat wordt gebruikt voor escape-aanhalingstekens binnen een reeds opgegeven waarde.
  • charToEscapeQuoteEscaping (standaard escape of \0): stelt één teken in dat wordt gebruikt voor het ontsnappen van de escape voor het aanhalingsteken. De standaardwaarde is escapeteken wanneer escape en quote tekens verschillend zijn, \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. Deze is standaard uitgeschakeld.
  • header (standaard false): gebruikt de eerste regel als namen van kolommen.
  • enforceSchema (standaard true): als dit is ingesteld op true, wordt het opgegeven of afgeleide schema geforceerd toegepast op gegevensbronbestanden en worden headers in CSV-bestanden genegeerd. Als de optie is ingesteld op onwaar, wordt het schema gevalideerd op basis van alle headers in CSV-bestanden in het geval dat de headeroptie is ingesteld op true. Veldnamen in het schema en kolomnamen in CSV-headers worden gecontroleerd door hun posities, rekening houdend met spark.sql.caseSensitive. Hoewel de standaardwaarde true is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen.
  • inferSchema (standaard false): leid het invoerschema automatisch af uit gegevens. Hiervoor is één extra doorgang over de gegevens vereist.
  • samplingRatio (standaard 1.0): definieert het deel van de rijen dat wordt gebruikt voor schema-inferatie.
  • ignoreLeadingWhiteSpace (standaard false): een vlag die aangeeft of voorloopspaties van waarden die worden gelezen, moeten worden overgeslagen.
  • ignoreTrailingWhiteSpace (standaard false): een vlag die aangeeft of volgspaties van waarden die worden gelezen, moeten worden overgeslagen.
  • nullValue (standaard lege tekenreeks): hiermee stelt u de tekenreeksweergave van een null-waarde in.
  • emptyValue (standaard lege tekenreeks): hiermee stelt u 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): hiermee stelt u de tekenreeksweergave van een negatieve oneindigheidswaarde in.
  • dateFormat (standaard yyyy-MM-dd): hiermee stelt u de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties in Datum/tijd-patronen. Dit geldt voor 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 in Datum/tijd-patronen. Dit is van toepassing op het tijdstempeltype.
  • maxColumns (standaard 20480): definieert een vaste limiet voor het aantal kolommen dat een record mag bevatten.
  • maxCharsPerColumn (standaard -1): definieert het maximum aantal tekens dat is toegestaan voor een opgegeven waarde die wordt gelezen. Standaard is het -1, wat een onbeperkte lengte betekent
  • unescapedQuoteHandling (standaard STOP_AT_DELIMITER): definieert hoe de CSV-parser waarden verwerkt met aanhalingstekens zonder aanhalingstekens.
    • STOP_AT_CLOSING_QUOTE: als aanhalingstekens zonder 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 afsluitende aanhalingsteken wordt gevonden.
    • BACK_TO_DELIMITER: Als aanhalingstekens zonder opmaak worden gevonden in de invoer, beschouwt u de waarde als een waarde zonder aanhalingstekens. Hierdoor worden in de parser alle tekens van de huidige geparseerde waarde verzameld totdat het scheidingsteken wordt gevonden. Als er geen scheidingsteken in de waarde wordt gevonden, blijft de parser tekens uit de invoer verzamelen totdat een scheidingsteken of regeleinde wordt gevonden.
    • STOP_AT_DELIMITER: Als aanhalingstekens zonder opmaak worden gevonden in de invoer, beschouwt u de waarde als een waarde zonder aanhalingstekens. Hierdoor worden alle tekens in de parser verzameld totdat het scheidingsteken of een regeleinde wordt gevonden in de invoer.
    • STOP_AT_DELIMITER: Als er aanhalingstekens worden gevonden in de invoer, wordt de inhoud die voor de opgegeven waarde is geparseerd, overgeslagen en wordt in plaats daarvan de ingestelde nullValue waarde geproduceerd.
    • RAISE_ERROR: als er aanhalingstekens met een ongeldige aanhalingsteken worden gevonden in de invoer, wordt een TextParsingException gegenereerd.
  • mode (standaard PERMISSIVE): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren. Het ondersteunt de volgende niet-hoofdlettergevoelige modi. Spark probeert alleen vereiste kolommen in CSV te parseren onder kolomsnoeien. Daarom kunnen beschadigde records 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 instellen in een door de gebruiker gedefinieerd schema. Als een schema het veld niet heeft, worden beschadigde 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 met minder tokens dan de lengte van het schema, stelt u null in op extra velden. Wanneer de record meer tokens heeft dan de lengte van het schema, worden er extra tokens verwijderd.
    • FAILFAST: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
  • columnNameOfCorruptRecord (standaard is de waarde die is opgegeven in spark.sql.columnNameOfCorruptRecord): maakt het mogelijk om de naam van het nieuwe veld te wijzigen met een ongeldige tekenreeks die door PERMISSIVE de modus is gemaakt. Dit overschrijft spark.sql.columnNameOfCorruptRecord.
  • multiLine (standaard): falseparseert éé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 bij 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.GlobFilterop . Het gedrag van partitiedetectie 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}