Dela via


Funktionen from_csv

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime

Returnerar ett struct-värde med csvStr och schema.

Syntax

from_csv(csvStr, schema [, options])

Argument

  • csvStr: Ett STRING-uttryck som anger en rad med CSV-data.
  • schema: En STRÄNGliteral eller anrop av schema_of_csv funktion.
  • options: En valfri MAP<STRING,STRING-literal> som anger direktiv.

Returer

En STRUCT med fältnamn och typer som matchar schemadefinitionen.

csvStr bör vara välformulerad med avseende på schema och options. schema måste definieras som kommaavgränsat kolumnnamn och datatyppar som används i till exempel CREATE TABLE.

options, om detta anges, kan vara något av följande:

  • sep (standard ,): anger en avgränsare för varje fält och värde. Den här avgränsaren kan innehålla ett eller flera tecken.
  • encoding (standard-UTF-8): avkodar CSV-filerna efter den angivna kodningstypen.
  • quote (standard "): anger ett enda tecken som används för att ta bort angivna värden där avgränsaren kan ingå i värdet. Om du vill inaktivera citattecken måste du inte ange null utan en tom sträng. Det här beteendet skiljer sig från com.databricks.spark.csv.
  • escape (standard \): anger ett enda tecken som används för att undvika citattecken i ett redan citerat värde.
  • charToEscapeQuoteEscaping (standard escape eller \0): anger ett enda tecken som används för att undvika escape för citattecknet. Standardvärdet är escape-tecken när escape och quote tecken skiljer sig åt, \0 annars.
  • comment (standard tom sträng): anger ett enda tecken som används för att hoppa över rader som börjar med det här tecknet. Som standard är den inaktiverad.
  • header (standard false): använder den första raden som namn på kolumner.
  • enforceSchema (standard true): Om det är inställt på sant tillämpas det angivna eller härledda schemat med två två skäl på datakällans filer, och rubriker i CSV-filer ignoreras. Om alternativet är inställt på false verifieras schemat mot alla huvuden i CSV-filer om rubrikalternativet är inställt på sant. Fältnamn i schema- och kolumnnamnen i CSV-huvuden kontrolleras av deras positioner med hänsyn spark.sql.caseSensitivetill . Även om standardvärdet är sant rekommenderar vi att du inaktiverar alternativet enforceSchema för att undvika felaktiga resultat.
  • inferSchema (standard false): härleder indataschemat automatiskt från data. Det krävs en extra passering av data.
  • samplingRatio (standard 1.0): definierar bråk av rader som används för schemaläggning.
  • ignoreLeadingWhiteSpace (standard false): en flagga som anger om inledande blanksteg från värden som läss ska hoppas över.
  • ignoreTrailingWhiteSpace (standard false): en flagga som anger om avslutande blanksteg från värden som läss ska hoppas över.
  • nullValue (standard tom sträng): anger strängrepresentationen av ett null-värde.
  • emptyValue (standard tom sträng): anger strängrepresentationen av ett tomt värde.
  • nanValue (standard NaN): anger strängrepresentationen av ett värde som inte är tal.
  • positiveInf (standard Inf): anger strängrepresentationen av ett positivt oändligt värde.
  • negativeInf (standard -Inf): anger strängrepresentationen av ett negativt oändligt värde.
  • dateFormat (standard yyyy-MM-dd): anger strängen som anger ett datumformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för datumtyp.
  • timestampFormat (standard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): anger strängen som anger ett tidsstämpelformat. Anpassade datumformat följer formaten i Datetime-mönster. Detta gäller för tidsstämpeltypen.
  • maxColumns (standard 20480): definierar en hård gräns för hur många kolumner en post kan ha.
  • maxCharsPerColumn (standard -1): definierar det maximala antalet tecken som tillåts för alla angivna värden som läss. Som standard är det -1 som betyder obegränsad längd
  • unescapedQuoteHandling (standard STOP_AT_DELIMITER): definierar hur CSV-parsern hanterar värden med ej kapslade citattecken.
    • STOP_AT_CLOSING_QUOTE: Om ej kapslade citattecken hittas i indata ackumulerar du citattecknet och fortsätter att parsa värdet som ett citerat värde tills en avslutande offert hittas.
    • BACK_TO_DELIMITER: Om ej kapslade citattecken hittas i indata bör du betrakta värdet som ett icke-citattecken. Detta gör att parsern ackumulerar alla tecken i det aktuella parsade värdet tills avgränsaren hittas. Om ingen avgränsare hittas i värdet fortsätter parsern att ackumulera tecken från indata tills en avgränsare eller radslut hittas.
    • STOP_AT_DELIMITER: Om ej kapslade citattecken hittas i indata bör du betrakta värdet som ett icke-citattecken. Detta gör att parsern ackumulerar alla tecken tills avgränsaren eller ett radslut hittas i indata.
    • STOP_AT_DELIMITER: Om ej kapslade citattecken hittas i indata hoppas innehållet som parsas för det angivna värdet över och värdet som anges i skapas i nullValue stället.
    • RAISE_ERROR: Om ej kapslade citattecken hittas i indata genereras en TextParsingException .
  • mode (standard PERMISSIVE): tillåter ett läge för att hantera skadade poster under parsning. Den stöder följande skiftlägen som är okänsliga. Spark försöker parsa endast nödvändiga kolumner i CSV under kolumnrensning. Därför kan skadade poster vara olika baserat på obligatoriska fältuppsättningar. Det här beteendet kan styras av spark.sql.csv.parser.columnPruning.enabled (aktiveras som standard).
    • PERMISSIVE: När den möter en skadad post placerar du den felaktigt formulerade strängen i ett fält som konfigurerats av columnNameOfCorruptRecordoch anger felaktiga fält till null. Om du vill behålla skadade poster kan en användare ange ett strängtypfält med namnet columnNameOfCorruptRecord i ett användardefinierat schema. Om ett schema inte har fältet släpps skadade poster under parsningen. En post med färre eller fler token än schemat är inte en skadad post till CSV. När den uppfyller en post med färre token än schemats längd anger null till extra fält. När posten har fler token än schemats längd släpper den extra token.
    • FAILFAST: utlöser ett undantag när det möter skadade poster.
  • columnNameOfCorruptRecord (standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord): tillåter att det nya fältet byts namn med en felaktig sträng som skapats av PERMISSIVE läget. Detta åsidosätter spark.sql.columnNameOfCorruptRecord.
  • multiLine (standard false): parsa en post, som kan sträcka sig över flera rader.
  • locale (standard en-US): anger ett språk som språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar.
  • lineSep (standardvärdet omfattar alla \r, \r\n, och \n): definierar den radavgränsare som ska användas för parsning. Maximal längd är 1 tecken.
  • pathGlobFilter: ett valfritt globmönster för att endast inkludera filer med sökvägar som matchar mönstret. Syntaxen följer org.apache.hadoop.fs.GlobFilter. Det ändrar inte beteendet för partitionsidentifiering.

Exempel

> 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}