Funktionen from_csv
Gäller för: Databricks SQL 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 definitionen för schema.
csvStr
bör vara välformulerad med avseende på schema
och options
.
schema
måste definieras som kommaavgränsade column namn 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 undvika citattecken valueswhere avgränsaren kan vara en del av värdet. Om du vill stänga av citattecken måste du: set inte 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 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. - rubrik (standard
false
): använder den första raden som namn för columns. -
enforceSchema
(standardtrue
): Om det är set till sant, tillämpas den angivna eller härledda schema påtvingat på datakällans filer, och rubriker i CSV-filer ignoreras. Om alternativet set är falskt verifieras schema mot alla rubriker i CSV-filerna när rubrikalternativet set är sant. Fältnamnen i fältens namn schema och column i CSV-huvuden kontrolleras utifrån deras positioner med hänsyn tillspark.sql.caseSensitive
. Även om standardvärdet är sant rekommenderar vi att du inaktiverar alternativet enforceSchema för att undvika felaktiga resultat. -
inferSchema
(standardfalse
): härleder indata schema 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 schema slutsatsdragning. -
ignoreLeadingWhiteSpace
(standardfalse
): en flagga som anger om inledande blanksteg vid läsning från values ska hoppas över. -
ignoreTrailingWhiteSpace
(standardfalse
): en flagga som anger om avslutande blanksteg vid läsning från values 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 värde som inte är tal. -
positiveInf
(standardInf
): anger strängrepresentationen av ett positivt oändligt värde. -
negativeInf
(standard-Inf)
: anger strängrepresentationen av ett negativt oändligt vä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 för tidsstämpeltypen. -
maxColumns
(standard20480
): definierar ett strikt limit av hur många columns 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
(standardSTOP_AT_DELIMITER
): definierar hur CSV-parsern hanterar values 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 icke-escapeade citattecken hittas i indata hoppas parsningen av innehållet för det angivna värdet över och istället produceras värdet set inullValue
. -
RAISE_ERROR
: Om ej kapslade 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 är okänsliga. Spark försöker parsa endast nödvändiga columns i CSV under column beskärning. Därför kan skadade poster vara olika baserat på obligatoriska set av fält. 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 du den felaktigt formulerade strängen i ett fält som konfigurerats avcolumnNameOfCorruptRecord
och anger felaktiga fält till null. För att behålla korrupta poster kan en användare set ett fält av strängtyp med namnet columnNameOfCorruptRecord i en användardefinierad schema. Om ett schema inte har det specificerade fältet, släpper det skadade poster under parsningen. En post med färre eller fler token än schema är inte en skadad post för CSV. När det möter en post där having har färre tokens än längden på schema, anges null för extra fält. När posten har fler tokenar än längden på schematar den bort de extra tokenarna. -
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 byte av det nya fältet having, en felaktigt formaterad 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
(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öljerorg.apache.hadoop.fs.GlobFilter
. Det ändrar inte beteendet för partition-upptäckt.
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}