from_csvfunktion (Databricks SQL)

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 STRING-literal eller anrop av schema
  • options: Ett valfritt MAP < STRING,STRING > literal specifying-direktiv.

Returer

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

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

options, om det finns, kan vara något av följande:

  • sep (standard , ): anger en avgränsare för varje fält och värde. Avgränsaren kan vara ett eller flera tecken.
  • encoding (utf-8 som standard): avkodar CSV-filerna med den angivna kodningstypen.
  • quote (standard " ): anger ett enskilt tecken som används för undantagstecken inom citattecken där avgränsaren kan vara en del av värdet. Om du vill inaktivera citattecken måste du ange inte null utan en tom sträng. Det här beteendet skiljer sig från com.databricks.spark.csv .
  • escape (standard \ ): anger ett enskilt tecken som används för undantagstecken inom ett redan citerat värde.
  • charToEscapeQuoteEscaping (standard escape eller ): anger ett enskilt tecken som används för att undvika \0 escape-tecknet för citattecknet. Standardvärdet är escape-tecken när escape och quote tecken skiljer sig, \0 annars.
  • comment (tom standardsträng): Anger ett enskilt tecken som används för att hoppa över rader som börjar med det här tecknet. Som standard är den inaktiverad.
  • header false (standard): använder den första raden som namn på kolumner.
  • enforceSchema (standard ): Om det är inställt på true tillämpas det angivna eller uppskjutna schemat framtrigt på datakkällans filer, och rubriker i true CSV-filer ignoreras. Om alternativet är inställt på false valideras schemat mot alla huvuden i CSV-filer om rubrikalternativet är inställt på true. Fältnamnen i schema- och kolumnnamnen i CSV-rubriker kontrolleras av deras positioner med hänsyn till spark.sql.caseSensitive . Även om standardvärdet är sant rekommenderar vi att du inaktiverar alternativet enforceSchema för att undvika felaktiga resultat.
  • inferSchema (standard false ): härsöker indataschemat automatiskt från data. Det krävs en extra vidare dataöverföring.
  • samplingRatio (standard 1.0): definierar bråkdelen av de rader som används för schemainferens.
  • ignoreLeadingWhiteSpace (standard false ): en flagga som anger om inledande blanksteg från värden som läses ska hoppas över.
  • ignoreTrailingWhiteSpace (standard false ): en flagga som anger om avslutande blanksteg från värden som läses ska hoppas över.
  • nullValue (tom standardsträng): anger strängrepresentationen för ett null-värde.
  • emptyValue (tom standardsträng): anger strängrepresentationen för ett tomt värde.
  • nanValue (standard NaN ): anger strängrepresentationen för ett värde som inte är tal.
  • positiveInf (standard Inf ): anger strängrepresentationen för ett positivt oändligt värde.
  • negativeInf-Inf)(standard: anger strängrepresentationen för ett negativt oändligt värde.
  • dateFormat (standard yyyy-MM-dd ): anger strängen som anger ett datumformat. Anpassade datumformat följer formaten i Databricks SQL datetime-mönster. Detta gäller för datumtypen.
  • 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 Databricks SQL 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 ett angivet värde som läses. Som standard är det -1 vilket innebär obegränsad längd
  • unescapedQuoteHandling (standard STOP_AT_DELIMITER ): definierar hur CSV-parsern hanterar värden med obildade citattecken.
    • STOP_AT_CLOSING_QUOTE: Om obildade citattecken hittas i indata ackumulerar du citattecknet och fortsätter parsa värdet som ett citattecken tills ett avslutande citattecken hittas.
    • BACK_TO_DELIMITER: Om obildade citattecken finns i indata kan 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 rad som slutar hittas.
    • STOP_AT_DELIMITER: Om obildade citattecken finns i indata kan du betrakta värdet som ett värde utan citattecken. Detta gör att parsern ackumuleras alla tecken tills avgränsaren eller en rad som slutar hittas i indata.
    • STOP_AT_DELIMITER: Om obildade citattecken hittas i indata hoppas innehållet som parsas för det angivna värdet över och värdet som anges i nullValue skapas i stället.
    • RAISE_ERROR: Om obildade citattecken hittas i indata, kommer ett TextParsingException att visas.
  • mode (standard PERMISSIVE ): tillåter ett läge för hantering av skadade poster under parsning. Den stöder följande icke-känsliga lägen. Spark försöker parsa endast obligatoriska kolumner i CSV under kolumnomsning. Därför kan skadade poster vara olika beroende på vilka fält som krävs. Det här beteendet kan styras spark.sql.csv.parser.columnPruning.enabled av (aktiverat som standard).
    • PERMISSIVE: när den uppfyller en skadad post placerar den felaktiga strängen i ett fält som konfigurerats av och anger felaktiga columnNameOfCorruptRecord 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 tar det bort 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 längden på schemat tar den bort extra token.
    • FAILFAST: kastar ett undantag när det uppfyller skadade poster.
  • columnNameOfCorruptRecord (Standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord ): tillåter namnbyte på det nya fältet med felaktig sträng som skapats av PERMISSIVE läge. 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\n , och ): \n definierar den radavgränsare som ska användas för parsning. Maxlängden är 1 tecken.
  • pathGlobFilter: ett valfritt glob-mönster som endast inkluderar 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}