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
STRUCT con nomi di campo e tipi corrispondenti alla definizione dello schema.
csvStr
deve essere ben formato rispetto a schema
e options
.
schema
deve essere definito come coppie nome colonna delimitato da virgole e tipo di dati come usato in, 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 utilizzato per l'escape dei valori tra virgolette in cui il separatore può far parte del valore. Se si desidera disattivare le virgolette, è necessario impostare 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 (impostazione predefinita
false
): usa la prima riga come nomi di colonne. enforceSchema
(impostazione predefinitatrue
): se è impostato su true, lo schema specificato o dedotto viene applicato forzatamente ai file dell'origine dati e le intestazioni nei file CSV vengono ignorate. Se l'opzione è impostata su false, lo schema viene convalidato in base a tutte le intestazioni nei file CSV nel caso in cui l'opzione di intestazione sia impostata su true. I nomi di campo negli schemi e nelle colonne nelle intestazioni CSV vengono controllati dalle rispettive posizioni tenendo contospark.sql.caseSensitive
di . Anche se il valore predefinito è true, è consigliabile disabilitare l'opzione enforceSchema per evitare risultati non corretti.inferSchema
(impostazione predefinitafalse
): deduce automaticamente lo 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 dello schema.ignoreLeadingWhiteSpace
(impostazione predefinitafalse
): flag che indica se gli spazi vuoti iniziali dai valori letti devono essere ignorati.ignoreTrailingWhiteSpace
(impostazione predefinitafalse
): flag che indica se gli spazi vuoti finali dai valori letti devono essere ignorati.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
(impostazione predefinita20480
): definisce un limite rigido del numero di colonne che un record può avere.maxCharsPerColumn
(valore predefinito -1): definisce il numero massimo di caratteri consentiti per qualsiasi valore specificato da leggere. Per impostazione predefinita, è -1 significa lunghezza illimitataunescapedQuoteHandling
(impostazione predefinitaSTOP_AT_DELIMITER
): definisce il modo in cui il parser CSV gestisce i valori con virgolette senza 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 senza caratteri di escape, il contenuto analizzato per il valore specificato viene ignorato e il valore impostato innullValue
viene generato.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 tenta di analizzare solo le colonne necessarie in CSV nell'eliminazione delle colonne. Di conseguenza, i record danneggiati possono essere diversi in base al set di campi richiesto. 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ò impostare un campo di tipo stringa denominato columnNameOfCorruptRecord in uno schema definito dall'utente. Se uno schema non dispone del campo, elimina i record danneggiati durante l'analisi. Un record con meno o più token rispetto allo schema non è un record danneggiato in CSV. Quando soddisfa un record con meno token rispetto alla lunghezza dello schema, imposta null su campi aggiuntivi. Quando il record ha più token rispetto alla lunghezza dello schema, elimina token aggiuntivi.FAILFAST
: genera un'eccezione quando soddisfa i record danneggiati.
columnNameOfCorruptRecord
(il valore predefinito è il valore specificato inspark.sql.columnNameOfCorruptRecord
): consente di rinominare il nuovo campo con una stringa in formato non valido creata dallaPERMISSIVE
modalità . 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
. Non modifica il comportamento dell'individuazione della partizione.
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}