Condividi tramite


Funzione from_csv

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì 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 da com.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 predefinita escape o \0): imposta un singolo carattere utilizzato per l'escape per il carattere di virgolette. Il valore predefinito è carattere di escape quando escape e quote 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 true): 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 conto spark.sql.caseSensitivedi . Anche se il valore predefinito è true, è consigliabile disabilitare l'opzione enforceSchema per evitare risultati non corretti.
  • inferSchema (impostazione predefinita false): 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 predefinita false): flag che indica se gli spazi vuoti iniziali dai valori letti devono essere ignorati.
  • ignoreTrailingWhiteSpace (impostazione predefinita false): 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 predefinita NaN): imposta la rappresentazione di stringa di un valore non numerico.
  • positiveInf (impostazione predefinita Inf): 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 predefinita yyyy-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 predefinita yyyy-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 predefinita 20480): 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 illimitata
  • unescapedQuoteHandling (impostazione predefinita STOP_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 in nullValue viene generato.
    • RAISE_ERROR: se nell'input vengono trovate virgolette senza caratteri di escape, viene generata un'eccezione TextParsingException .
  • mode (impostazione predefinita PERMISSIVE): 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 da spark.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 da columnNameOfCorruptRecorde 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 in spark.sql.columnNameOfCorruptRecord): consente di rinominare il nuovo campo con una stringa in formato non valido creata dalla PERMISSIVE modalità . In questo modo viene eseguito l'override di spark.sql.columnNameOfCorruptRecord.
  • multiLine (impostazione predefinita false): analizzare un record, che può estendersi su più righe.
  • locale (impostazione predefinita en-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\ne \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 segue org.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}