from_csv
Funktion
Gäller för: Databricks 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åncom.databricks.spark.csv
.escape
(standard\
): anger ett enda tecken som används för att undvika citattecken i ett redan citerat värde.charToEscapeQuoteEscaping
(standardescape
eller\0
): anger ett enda tecken som används för att undvika escape för citattecknet. Standardvärdet är escape-tecken närescape
ochquote
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
(standardtrue
): 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änsynspark.sql.caseSensitive
till . Även om standardvärdet är sant rekommenderar vi att du inaktiverar alternativet enforceSchema för att undvika felaktiga resultat.inferSchema
(standardfalse
): 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
(standardfalse
): en flagga som anger om inledande blanksteg från värden som läss ska hoppas över.ignoreTrailingWhiteSpace
(standardfalse
): 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
(standardNaN
): anger strängrepresentationen av ett icke-talvärde.positiveInf
(standardInf
): anger strängrepresentationen av ett positivt oändligt värde.negativeInf
(standard-Inf)
: anger strängrepresentationen av ett negativt oändlighetsvärde.dateFormat
(standardyyyy-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
(standardyyyy-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
(standard20480
): 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ängdunescapedQuoteHandling
(standardSTOP_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 inullValue
stället.RAISE_ERROR
: Om ej inkapslade citattecken hittas i indata genereras enTextParsingException
.
mode
(standardPERMISSIVE
): 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 avspark.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 avcolumnNameOfCorruptRecord
och 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 ispark.sql.columnNameOfCorruptRecord
): tillåter att det nya fältet får en felaktig sträng som skapats avPERMISSIVE
läget. Detta åsidosätterspark.sql.columnNameOfCorruptRecord
.multiLine
(standardfalse
): parsa en post, som kan sträcka sig över flera rader.locale
(standarden-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. 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öljerorg.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}