Funzione from_csv
Si applica a: Databricks SQL Databricks Runtime
Restituisce un valore struct con csvStr
e schema
.
Sintassi
from_csv(csvStr, schema [, options])
Argomenti
-
csvStr
: espressione STRING che specifica una riga di dati CSV. -
schema
: valore letterale STRING o chiamata di schema_of_csv funzione. -
options
: valore letterale MAP<STRING facoltativo che> specifica le direttive.
Valori restituiti
Una STRUCT con nomi di campo e tipi corrispondenti alla definizione di schema.
csvStr
deve essere ben formato rispetto a schema
e options
.
schema
deve essere definito come coppie nome e tipo di dati delimit column ate da virgole, ad esempio CREATE TABLE
.
options
, se specificato, può essere uno dei seguenti:
-
sep
(impostazione predefinita,
): imposta un separatore per ogni campo e valore. Questo separatore può essere uno o più caratteri. -
encoding
(UTF-8 predefinito): decodifica i file CSV in base al tipo di codifica specificato. -
quote
(impostazione predefinita"
): imposta un singolo carattere usato per escape di caratteri racchiusi tra virgolette valueswhere, il separatore può essere parte del valore. Se si desidera disattivare le virgolette, è necessario set non null ma una stringa vuota. Questo comportamento è diverso dacom.databricks.spark.csv
. -
escape
(impostazione predefinita\
): imposta un singolo carattere utilizzato per l'escape delle virgolette all'interno di un valore già racchiuso tra virgolette. -
charToEscapeQuoteEscaping
(impostazione predefinitaescape
o\0
): imposta un singolo carattere utilizzato per l'escape per il carattere di virgolette. Il valore predefinito è carattere di escape quandoescape
equote
i caratteri sono diversi,\0
in caso contrario. -
comment
(stringa vuota predefinita): imposta un singolo carattere utilizzato per ignorare le righe che iniziano con questo carattere. Per impostazione predefinita, è disabilitata. - intestazione predefinita (
false
): utilizza la prima riga per i nomi di columns. -
enforceSchema
(true
predefinita): se viene impostato set su true, il schema specificato o dedotto viene forzatamente applicato ai file dell'origine dati, e le intestazioni nei file CSV vengono ignorate. Se l'opzione è set su false, il schema viene convalidato in base a tutte le intestazioni nei file CSV nel caso in cui l'opzione di intestazione sia set su true. I nomi di campo delle intestazioni schema e column nei file CSV vengono controllati in base alle loro posizioni tenendo conto dispark.sql.caseSensitive
. Anche se il valore predefinito è true, è consigliabile disabilitare l'opzione enforceSchema per evitare risultati non corretti. -
inferSchema
(false
predefinita): deduce automaticamente il schema di input dai dati. Richiede un passaggio aggiuntivo sui dati. -
samplingRatio
(impostazione predefinita 1.0): definisce la frazione di righe usate per l'inferenza di schema. -
ignoreLeadingWhiteSpace
(false
predefinita): flag che indica se gli spazi vuoti iniziali di values letti devono essere ignorati. -
ignoreTrailingWhiteSpace
(false
predefinita): flag che indica se gli spazi bianchi finali letti da values devono essere ignorati o meno. -
nullValue
(stringa vuota predefinita): imposta la rappresentazione di stringa di un valore Null. -
emptyValue
(stringa vuota predefinita): imposta la rappresentazione di stringa di un valore vuoto. -
nanValue
(impostazione predefinitaNaN
): imposta la rappresentazione di stringa di un valore non numerico. -
positiveInf
(impostazione predefinitaInf
): imposta la rappresentazione di stringa di un valore infinito positivo. -
negativeInf
(impostazione predefinita-Inf)
: imposta la rappresentazione di stringa di un valore infinito negativo. -
dateFormat
(impostazione predefinitayyyy-MM-dd
): imposta la stringa che indica un formato di data. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di dati. -
timestampFormat
(impostazione predefinitayyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): imposta la stringa che indica un formato timestamp. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di timestamp. -
maxColumns
(20480
predefinita): definisce un limit fisso del numero di columns di un record. -
maxCharsPerColumn
(valore predefinito -1): definisce il numero massimo di caratteri consentiti per qualsiasi valore specificato da leggere. Per impostazione predefinita, è -1 significa lunghezza illimitata -
unescapedQuoteHandling
(STOP_AT_DELIMITER
predefinita): definisce il modo in cui il parser CSV gestisce values con virgolette non precedute da caratteri di escape.-
STOP_AT_CLOSING_QUOTE
: se nell'input vengono trovate virgolette senza caratteri di escape, accumulare il carattere di virgolette e continuare a analizzare il valore come valore tra virgolette, fino a quando non viene trovata una virgoletta di chiusura. -
BACK_TO_DELIMITER
: se nell'input vengono trovate virgolette senza caratteri di escape, considerare il valore come valore senza virgolette. In questo modo il parser accumula tutti i caratteri del valore analizzato corrente fino a quando non viene trovato il delimitatore. Se non viene trovato alcun delimitatore nel valore, il parser continuerà ad accumulare caratteri dall'input fino a quando non viene trovato un delimitatore o una terminazione di riga. -
STOP_AT_DELIMITER
: se nell'input vengono trovate virgolette senza caratteri di escape, considerare il valore come valore senza virgolette. In questo modo il parser accumula tutti i caratteri fino a quando non viene trovato il delimitatore o una terminazioni di riga nell'input. -
STOP_AT_DELIMITER
: Se nell'input vengono trovate virgolette non protette, il contenuto previsto per il valore specificato viene saltato e viene generato invece il valore set innullValue
. -
RAISE_ERROR
: se nell'input vengono trovate virgolette senza caratteri di escape, viene generata un'eccezioneTextParsingException
.
-
-
mode
(impostazione predefinitaPERMISSIVE
): consente una modalità per gestire i record danneggiati durante l'analisi. Supporta le modalità senza distinzione tra maiuscole e minuscole seguenti. Spark cerca di analizzare solo i columns richiesti nel CSV durante il processo di potatura column. Pertanto, i record danneggiati possono variare a seconda del numero richiesto di campi (set). Questo comportamento può essere controllato daspark.sql.csv.parser.columnPruning.enabled
(abilitato per impostazione predefinita).-
PERMISSIVE
: quando soddisfa un record danneggiato, inserisce la stringa in formato non valido in un campo configurato dacolumnNameOfCorruptRecord
e imposta i campi in formato non valido su Null. Per mantenere i record danneggiati, un utente può set un campo di tipo stringa denominato columnNameOfCorruptRecord in un schemadefinito dall'utente. Se un schema non dispone del campo, elimina i record danneggiati durante l'analisi. Un record con meno o più token di schema non è un record danneggiato nel file CSV. Quando trova un record having con meno token rispetto alla lunghezza di schema, imposta null nei campi aggiuntivi. Quando il record ha più token rispetto alla lunghezza del schema, rilascia token aggiuntivi. -
FAILFAST
: genera un'eccezione quando soddisfa i record danneggiati.
-
-
columnNameOfCorruptRecord
(valore predefinito è quello specificato inspark.sql.columnNameOfCorruptRecord
): consente di rinominare il nuovo campo having stringa malformata creata dalla modalitàPERMISSIVE
. In questo modo viene eseguito l'override dispark.sql.columnNameOfCorruptRecord
. -
multiLine
(impostazione predefinitafalse
): analizzare un record, che può estendersi su più righe. -
locale
(impostazione predefinitaen-US
): imposta le impostazioni locali come tag di lingua in formato IETF BCP 47. Ad esempio, questo viene usato durante l'analisi di date e timestamp. -
lineSep
(il valore predefinito riguarda tutti ,\r
\r\n
e\n
): definisce il separatore di riga che deve essere usato per l'analisi. La lunghezza massima è 1 carattere. -
pathGlobFilter
: modello GLOB facoltativo per includere solo i file con percorsi corrispondenti al criterio. La sintassi segueorg.apache.hadoop.fs.GlobFilter
. L'individuazione di partition non modifica il suo comportamento.
Esempi
> 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}