Funkce from_csv
Platí pro: Databricks SQL Databricks Runtime
Vrátí hodnotu struktury s hodnotou csvStr
a schema
.
Syntaxe
from_csv(csvStr, schema [, options])
Argumenty
csvStr
: Výraz STRING určující řádek dat CSV.schema
: Literál STRING nebo vyvolání schema_of_csv funkce.options
: Volitelný MAP<STRING,STRING> literál určující direktivy.
Návraty
Struktura s názvy polí a typy odpovídající definici schématu.
csvStr
by měly být dobře vytvořeny s ohledem na a schema
options
.
schema
musí být definován jako názvy sloupců oddělených čárkami a páry datových typů, jak se používá například CREATE TABLE
.
options
, pokud je uvedeno, může být některá z těchto možností:
sep
(výchozí,
): nastaví oddělovač pro každé pole a hodnotu. Tento oddělovač může být jeden nebo více znaků.encoding
(výchozí UTF-8): dekóduje soubory CSV zadaným typem kódování.quote
(výchozí"
): nastaví jeden znak použitý pro zapouzdření uvozových hodnot, kde oddělovač může být součástí hodnoty. Pokud chcete vypnout uvozovky, musíte nastavit hodnotu null, ale prázdný řetězec. Toto chování se liší odcom.databricks.spark.csv
.escape
(výchozí\
): nastaví jeden znak použitý pro uvozovky uvnitř již citované hodnoty.charToEscapeQuoteEscaping
(výchozíescape
nebo\0
): nastaví jeden znak použitý pro uvozovku pro uvozovku. Výchozí hodnota je řídicí znak, pokudescape
sequote
znaky liší,\0
jinak.comment
(výchozí prázdný řetězec): Nastaví jeden znak používaný pro přeskočení řádků začínajících tímto znakem. Ve výchozím nastavení je zakázaná.- header (default
false
): používá první řádek jako názvy sloupců. enforceSchema
(výchozítrue
): Pokud je nastavena na hodnotu true, zadané nebo odvozené schéma je vynuceně použito u souborů zdroje dat a hlavičky v souborech CSV se ignorují. Pokud je tato možnost nastavená na hodnotu false, schéma se ověří ve všech hlavicích v souborech CSV v případě, že je možnost hlavičky nastavená na true. Názvy polí v názvech schématu a sloupců v hlavičce CSV jsou kontrolovány jejich pozicemi s ohledemspark.sql.caseSensitive
na . I když je výchozí hodnota true, doporučuje se zakázat možnost vynuceníSchema, aby se zabránilo nesprávným výsledkům.inferSchema
(výchozífalse
): odvodí vstupní schéma automaticky z dat. Vyžaduje další předání dat.samplingRatio
(výchozí hodnota 1,0): definuje zlomek řádků použitých pro odvození schématu.ignoreLeadingWhiteSpace
(výchozífalse
): příznak označující, zda mají být vynechány počáteční prázdné znaky z hodnot, které se čtou.ignoreTrailingWhiteSpace
(výchozífalse
): příznak označující, zda mají být přeskočeny koncové prázdné znaky z hodnot, které se čtou.nullValue
(výchozí prázdný řetězec): Nastaví řetězcovou reprezentaci hodnoty null.emptyValue
(výchozí prázdný řetězec): Nastaví řetězcovou reprezentaci prázdné hodnoty.nanValue
(výchozíNaN
): nastaví řetězcovou reprezentaci nečíslové hodnoty.positiveInf
(výchozíInf
): nastaví řetězcovou reprezentaci kladné nekonečno hodnoty.negativeInf
(výchozí hodnota-Inf)
: nastaví řetězcovou reprezentaci záporné hodnoty nekonečna.dateFormat
(výchozíyyyy-MM-dd
): nastaví řetězec, který označuje formát data. Vlastní formáty kalendářních dat se řídí formáty v vzorech datetime. To platí pro typ data.timestampFormat
(výchozíyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): nastaví řetězec, který označuje formát časového razítka. Vlastní formáty kalendářních dat se řídí formáty v vzorech datetime. To platí pro typ časového razítka.maxColumns
(výchozí20480
): definuje pevný limit počtu sloupců, které může záznam obsahovat.maxCharsPerColumn
(výchozí -1): definuje maximální počet znaků povolený pro každou zadanou hodnotu, která se čte. Ve výchozím nastavení je -1, což znamená neomezenou délku.unescapedQuoteHandling
(výchozíSTOP_AT_DELIMITER
): definuje, jak analyzátor CSV zpracovává hodnoty s unescaped uvozovkami.STOP_AT_CLOSING_QUOTE
: Pokud jsou ve vstupu nalezeny neuskutečené uvozovky, nashromážděte znak uvozovky a pokračujte parsováním hodnoty jako uvozovky, dokud se nenajde pravá uvozovka.BACK_TO_DELIMITER
: Pokud jsou ve vstupu nalezeny neuskutečené uvozovky, zvažte hodnotu jako necitovanou hodnotu. Tím se analyzátoru nahromáždí všechny znaky aktuální parsované hodnoty, dokud se nenajde oddělovač. Pokud se v hodnotě nenajde žádný oddělovač, analyzátor bude pokračovat ve shromažďování znaků ze vstupu, dokud se nenajde oddělovač nebo konec řádku.STOP_AT_DELIMITER
: Pokud jsou ve vstupu nalezeny neuskutečené uvozovky, zvažte hodnotu jako necitovanou hodnotu. Tím se parser hromadí všechny znaky, dokud se ve vstupu nenajde oddělovač nebo konec řádku.STOP_AT_DELIMITER
: Pokud jsou ve vstupu nalezeny neuskutečené uvozovky, obsah analyzovaný pro zadanou hodnotu se přeskočí a místo toho se vytvoří hodnota nastavenánullValue
.RAISE_ERROR
: Pokud jsou ve vstupu nalezeny nepotřebné uvozovky,TextParsingException
je vyvolán.
mode
(výchozíPERMISSIVE
): Umožňuje režim pro práci s poškozenými záznamy během analýzy. Podporuje následující režimy nerozlišující malá a velká písmena. Spark se pokusí analyzovat jenom požadované sloupce ve sdíleném svazku clusteru pod vyřezáváním sloupců. Proto se poškozené záznamy můžou lišit v závislosti na požadované sadě polí. Toto chování je možné říditspark.sql.csv.parser.columnPruning.enabled
(ve výchozím nastavení povoleno).PERMISSIVE
: Když splňuje poškozený záznam, umístí poškozený řetězec do pole nakonfigurovanéhocolumnNameOfCorruptRecord
pomocí a nastaví poškozená pole na hodnotu null. Pokud chcete zachovat poškozené záznamy, může uživatel nastavit pole typu řetězce s názvem columnNameOfCorruptRecord ve schématu definovaném uživatelem. Pokud schéma pole neobsahuje, během analýzy zahodí poškozené záznamy. Záznam s méně nebo více tokeny než schéma není poškozený záznam do sdíleného svazku clusteru. Když splňuje záznam s menším počtem tokenů než délka schématu, nastaví hodnotu null na další pole. Pokud záznam obsahuje více tokenů, než je délka schématu, zahodí další tokeny.FAILFAST
: vyvolá výjimku, když splňuje poškozené záznamy.
columnNameOfCorruptRecord
(výchozí hodnota je hodnota zadaná vspark.sql.columnNameOfCorruptRecord
): Umožňuje přejmenování nového pole s poškozeným řetězcem vytvořeným režimemPERMISSIVE
. Toto přepsáníspark.sql.columnNameOfCorruptRecord
.multiLine
(výchozífalse
): parsuje jeden záznam, který může zahrnovat více řádků.locale
(výchozíen-US
): Nastaví národní prostředí jako značku jazyka ve formátu IETF BCP 47. Používá se například při analýze kalendářních dat a časových razítek.lineSep
(výchozí hodnota pokrývá vše\r
,\r\n
a\n
): definuje oddělovač čar, který se má použít k analýze. Maximální délka je 1 znak.pathGlobFilter
: Volitelný vzor globu, který bude obsahovat pouze soubory s cestami odpovídajícími vzoru. Syntaxe následujeorg.apache.hadoop.fs.GlobFilter
. Nemění chování zjišťování oddílů.
Příklady
> 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}