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 schemadefinitionen.
csvStr
bör vara välformulerad med avseende på schema
och options
.
schema
måste definieras som kommaavgränsade kolumnnamn och datatyper som används till exempel i 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 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å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 på kolumner. -
enforceSchema
(standardtrue
): Om det är inställt på true, tillämpas det angivna eller härledda schemat med tvång 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ält- och kolumnnamn i CVS-huvuden kontrolleras genom deras positioner med beaktande avspark.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 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 schemadragning. -
ignoreLeadingWhiteSpace
(standardfalse
): en flagga som anger om inledande blanksteg i värden som läses ska hoppas över. -
ignoreTrailingWhiteSpace
(förinställt värdefalse
): en flagga som anger om avslutande mellanslag från värden som läses 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 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
(standardSTOP_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 okapslade citattecken hittas i indata, hoppas det innehåll som parsas för det angivna värdet över och i stället genereras det värde som anges 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 kolumner i CSV under kolumnrensning. Därför kan korrupta poster skilja sig 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 du den felaktigt formulerade 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ängtypfält med namnet columnNameOfCorruptRecord i ett användardefinierat schema. Om ett schema inte har fältet, släpps korrupta poster vid parsning. En post med färre eller fler element än vad som finns i schemat är inte en skadad post för CSV. När det möter en post med färre element än schemats längd, sätter den null till överskottsfält. När rekordet har fler token än schemats längd tar det bort 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 byta namn på det nya fältet som har en felaktigt formaterad sträng skapad avPERMISSIVE
-läge. 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 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}