from_csv
Funzione
Si applica a: controllo SQL di Databricks Databricks Runtime
Restituisce un valore di 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 della funzione schema_of_csv.options
: valore letterale MAP STRING,STRING> facoltativo<che specifica le direttive.
Restituisce
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 predefinita): se è impostatatrue
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 dei campi nei nomi di schema e colonna 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 data.timestampFormat
(impostazione predefinitayyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): imposta la stringa che indica un formato di 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 letto. 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 l'analisi del 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 nel valore non viene trovato alcun delimitatore, 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 il delimitatore o la fine di una riga non viene trovata 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à di gestione dei 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. Pertanto, 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 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 ha il 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'overridespark.sql.columnNameOfCorruptRecord
di .multiLine
(impostazione predefinitafalse
): analizzare un record, che può estendersi su più righe.locale
(impostazione predefinitaen-US
): imposta le impostazioni locali come tag di lingua nel formato IETF BCP 47. Ad esempio, viene usato durante l'analisi di date e timestamp.lineSep
(impostazione predefinita copre tutti ,\r
\r\n
e\n
): definisce il separatore di riga da usare per l'analisi. La lunghezza massima è 1 carattere.pathGlobFilter
: modello GLOB facoltativo per includere solo i file con percorsi corrispondenti al modello. 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}