from_csv Funktion

Gäller för:check markerad ja Databricks SQL-kontroll 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.

Returnerar

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 vara 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 undvika citerade värden där avgränsaren kan vara en del av 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 är olika, \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å true 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 rubriker i CSV-filer i det fall då 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äver en extra överströmning av data.
  • samplingRatio (standard 1.0): definierar bråk med rader som används för schemadragning.
  • 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 icke-talvärde.
  • positiveInf (standard Inf): anger strängrepresentationen av ett positivt oändligt värde.
  • negativeInf (standard -Inf): anger strängrepresentationen av ett negativt oändlighetsvä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 tidsstämpeltyp.
  • 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äse. Som standard är den -1, vilket innebär obegränsad längd
  • unescapedQuoteHandling (standard STOP_AT_DELIMITER): definierar hur CSV-parsern hanterar värden med icke-kapslade citattecken.
    • STOP_AT_CLOSING_QUOTE: Om ej inkapslade citattecken hittas i indata ackumulerar du offerttecknet och fortsätter att parsa värdet som ett citerat värde tills en avslutande offert hittas.
    • BACK_TO_DELIMITER: Om ej inkapslade citattecken hittas i indata bör du betrakta värdet som ett värde utan 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 inkapslade citattecken hittas i indata bör du betrakta värdet som ett värde utan citattecken. Detta gör att parsern ackumulerar alla tecken tills avgränsaren eller ett radslut hittas i indata.
    • STOP_AT_DELIMITER: Om ej inkapslade 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 inkapslade 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 inte är skiftlägena. Spark försöker parsa endast obligatoriska kolumner i CSV under kolumnrensning. Därför kan skadade poster skilja sig åt 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 den felaktiga 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ängtypsfält med namnet columnNameOfCorruptRecord i ett användardefinierat schema. Om ett schema inte har fältet försvinner skadade poster under parsningen. En post med färre eller fler token än schemat är inte en skadad post för CSV. När den möter 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 får 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 (standard omfattar alla \r, \r\noch \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}