from_csv
Funkció
A következőre vonatkozik: Databricks SQL Databricks Runtime
Egy szerkezetértéket a és schema
a értékkel ad csvStr
vissza.
Szintaxis
from_csv(csvStr, schema [, options])
Argumentumok
csvStr
: A CSV-adatok sorát meghatározó STRING-kifejezés.schema
: Sztringkonstans vagy schema_of_csv függvény meghívása.options
: Egy opcionális MAP<STRING,STRING> literál, amely direktívákat határoz meg.
Visszatérési érték
A sémadefiníciónak megfelelő mezőneveket és típusokat tartalmazó STRUCT.
csvStr
jól formázottnak kell lennie a schema
és options
a vonatkozásában.
schema
vesszővel tagolt oszlopnévként és adattípus-párként kell definiálni, CREATE TABLE
például: .
options
, ha meg van adva, a következők bármelyike lehet:
sep
(alapértelmezett,
): minden mezőhöz és értékhez beállít egy elválasztót. Ez az elválasztó karakter lehet egy vagy több karakter.encoding
(alapértelmezett UTF-8): a CSV-fájlokat a megadott kódolási típus alapján dekódolja.quote
(alapértelmezett"
): egyetlen karaktert állít be az idézőjeles értékek elől való meneküléshez, ahol az elválasztó az érték része lehet. Ha ki szeretné kapcsolni az idézőjeleket, nem null értéket, hanem üres sztringet kell beállítania. Ez a viselkedés eltér a -tőlcom.databricks.spark.csv
.escape
(alapértelmezett\
): egyetlen karaktert állít be az idézőjelek egy már idézett értéken belüli meneküléséhez.charToEscapeQuoteEscaping
(alapértelmezettescape
vagy\0
): egyetlen karaktert állít be az idézőjel feloldójelének elhagyásához. Az alapértelmezett érték a feloldó karakter, haescape
a ésquote
a karakter eltérő,\0
egyébként.comment
(alapértelmezett üres sztring): egyetlen karaktert állít be, amellyel az ezzel a karakterrel kezdődő vonalakat kihagyja. Alapértelmezés szerint le van tiltva.- header (alapértelmezett
false
): az első sort használja oszlopok neveként. enforceSchema
(alapértelmezetttrue
): Ha igaz értékre van állítva, a megadott vagy a kikövetkeztetett sémát kényszerített módon alkalmazza a rendszer az adatforrásfájlokra, és a CSV-fájlok fejléceit figyelmen kívül hagyja. Ha a beállítás false (hamis) értékre van állítva, a rendszer ellenőrzi a sémát a CSV-fájlok összes fejlécén abban az esetben, ha a fejlécbeállítás igaz értékre van állítva. A CSV-fejlécekben lévő séma- és oszlopnevek mezőneveit a pozícióik ellenőrzik, figyelembespark.sql.caseSensitive
véve a következőt: . Bár az alapértelmezett érték igaz, javasoljuk, hogy tiltsa le a enforceSchema beállítást a helytelen eredmények elkerülése érdekében.inferSchema
(alapértelmezettfalse
): a bemeneti sémát automatikusan az adatokból következteti ki. Ehhez egy további adatátadásra van szükség.samplingRatio
(alapértelmezett 1.0): a sémakövetkezéshez használt sorok töredékét határozza meg.ignoreLeadingWhiteSpace
(alapértelmezettfalse
): egy jelző, amely azt jelzi, hogy ki kell-e hagyni a szóközöket az olvasási értékekből.ignoreTrailingWhiteSpace
(alapértelmezettfalse
): egy jelző, amely azt jelzi, hogy az éppen beolvasott értékekből származó szóközöket ki kell-e hagyni.nullValue
(alapértelmezett üres sztring): a null érték sztring-ábrázolását állítja be.emptyValue
(alapértelmezett üres sztring): egy üres érték sztring-ábrázolását állítja be.nanValue
(alapértelmezettNaN
): egy nem számérték sztring-ábrázolását állítja be.positiveInf
(alapértelmezettInf
): egy pozitív végtelen érték sztringreprezentációját állítja be.negativeInf
(alapértelmezett-Inf)
: egy negatív végtelen érték sztringreprezentációját állítja be.dateFormat
(alapértelmezettyyyy-MM-dd
): beállítja a dátumformátumot jelző sztringet. Az egyéni dátumformátumok a Datetime-mintákban szereplő formátumokat követik. Ez a dátumtípusra vonatkozik.timestampFormat
(alapértelmezettyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): beállítja az időbélyeg formátumát jelző sztringet. Az egyéni dátumformátumok a Datetime-mintákban szereplő formátumokat követik. Ez az időbélyeg típusára vonatkozik.maxColumns
(alapértelmezett20480
): meghatározza, hogy egy rekord hány oszlopot tartalmazhat.maxCharsPerColumn
(alapértelmezett -1): a megadott értékek olvasásához engedélyezett karakterek maximális számát határozza meg. Alapértelmezés szerint -1, ami korlátlan hosszúságot jelentunescapedQuoteHandling
(alapértelmezettSTOP_AT_DELIMITER
): azt határozza meg, hogy a CSV-elemző hogyan kezeli az értékeket kibontatlan idézőjelekkel.STOP_AT_CLOSING_QUOTE
: Ha nem beágyazott idézőjeleket talál a bemenetben, halmozja fel az idézőjel karaktert, és folytassa az érték idézőjelként való elemzését, amíg nem talál záró idézőjelet.BACK_TO_DELIMITER
: Ha a bemenetben nem beágyazott idézőjelek találhatók, az értéket nem kvótált értékként kell figyelembe venni. Így az elemző összegyűjti az aktuális elemzett érték összes karakterét, amíg meg nem találja az elválasztó karaktert. Ha az érték nem tartalmaz elválasztójelet, az elemző addig gyűjti a karaktereket a bemenetből, amíg elválasztó vagy sorvégződés nem található.STOP_AT_DELIMITER
: Ha a bemenetben nem beágyazott idézőjelek találhatók, az értéket nem kvótált értékként kell figyelembe venni. Ezzel az elemző összes karaktert halmoz fel, amíg az elválasztó vagy egy sorvégződés nem található a bemenetben.STOP_AT_DELIMITER
: Ha nem beágyazott idézőjeleket talál a bemenetben, a rendszer kihagyja a megadott értékhez elemzett tartalmat, és a beírtnullValue
értéket állítja elő.RAISE_ERROR
: Ha nem beágyazott idézőjeleket talál a bemenetben,TextParsingException
a a lesz.
mode
(alapértelmezettPERMISSIVE
): lehetővé teszi a sérült rekordok elemzés közbeni kezelését. A következő kis- és nagybetűket nem megkülönböztető módokat támogatja. A Spark csak a szükséges oszlopokat próbálja elemezni a CSV-ben az oszlopmetszés alatt. Ezért a sérült rekordok a kötelező mezőkészlet alapján eltérőek lehetnek. Ez a viselkedés szabályozhatóspark.sql.csv.parser.columnPruning.enabled
(alapértelmezés szerint engedélyezve).PERMISSIVE
: ha egy sérült rekordnak felel meg, a helytelen formátumú sztringet egy , általcolumnNameOfCorruptRecord
konfigurált mezőbe helyezi, és a hibás formátumú mezőket null értékre állítja. A sérült rekordok megőrzéséhez a felhasználó beállíthat egy columnNameOfCorruptRecord nevű sztringtípus-mezőt egy felhasználó által definiált sémában. Ha egy séma nem rendelkezik a mezővel, az elemzés során a sérült rekordokat elveti. A sémánál kevesebb vagy több tokent tartalmazó rekordok nem sérültek a CSV-ben. Ha egy olyan rekordnak felel meg, amelynek kevesebb tokenje van, mint a séma hossza, a null értéket további mezőkre állítja. Ha a rekord több jogkivonattal rendelkezik, mint a séma hossza, a további tokeneket elveti.FAILFAST
: kivételt jelez, ha sérült rekordoknak felel meg.
columnNameOfCorruptRecord
(az alapértelmezett érték a következőbenspark.sql.columnNameOfCorruptRecord
van megadva: ): lehetővé teszi az új mező átnevezését, amely a mód általPERMISSIVE
létrehozott helytelen formátumú sztringet tartalmazza. Ez felülbírálja a parancsotspark.sql.columnNameOfCorruptRecord
.multiLine
(alapértelmezettfalse
): Elemezze egy rekordot, amely több sorra is kiterjedhet.locale
(alapértelmezetten-US
): nyelvi címkeként állítja be a területi beállításokat IETF BCP 47 formátumban. Ez például a dátumok és időbélyegek elemzésekor használatos.lineSep
(alapértelmezés szerint az összes\r
,\r\n
és\n
): az elemzéshez használandó vonalelválasztót határozza meg. A maximális hossz 1 karakter.pathGlobFilter
: egy nem kötelező glob minta, amely csak a mintának megfelelő elérési utakkal rendelkező fájlokat tartalmazza. A szintaxis a következő:org.apache.hadoop.fs.GlobFilter
. Ez nem változtatja meg a partíciófelderítés viselkedését.
Példák
> 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}