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 schemadefinitie.

csvStr moet goed worden gevormd met betrekking tot de schema en options. schema moet worden gedefinieerd als door komma's gescheiden kolomnaam 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-waarden tussen aanhalingstekens, waarbij het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet u niet null maar een lege tekenreeks instellen. 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 namen van kolommen.
  • enforceSchema (standaard true): Als het is ingesteld op true, wordt het opgegeven of afgeleide schema geforceerd toegepast op gegevensbestanden en worden headers in CSV-bestanden genegeerd. Als de optie is ingesteld op onwaar, wordt het schema gevalideerd voor alle headers in CSV-bestanden in het geval dat de headeroptie is ingesteld op waar. Veldnamen in het schema en kolomnamen in CSV-koppen worden gecontroleerd door hun posities rekening houdend met spark.sql.caseSensitivehun posities. Hoewel de standaardwaarde waar is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen.
  • inferSchema (standaard false): hiermee wordt het invoerschema automatisch afgeleid van gegevens. Hiervoor is één extra pass over de gegevens vereist.
  • samplingRatio (standaard 1.0): definieert fractie van rijen die worden gebruikt voor het uitstellen van schema's.
  • 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): 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 vaste limiet van het aantal kolommen dat een record mag 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 waarden verwerkt met niet-gescaped 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 onopgemaakte aanhalingstekens worden gevonden in de invoer, wordt de inhoud die voor de opgegeven waarde wordt geparseerd, overgeslagen en wordt de ingestelde waarde in plaats daarvan 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 vereiste kolommen in CSV te parseren onder het verwijderen van kolommen. 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 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 het 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): staat het wijzigen van de naam van het nieuwe veld toe met een ongeldige tekenreeks die is gemaakt door PERMISSIVE de 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 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}