A from_csv függvény

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Egy szerkezetet vagy variánsértéket ad vissza a csvStr elemezve schema használatával.

Szintaxis

from_csv(csvStr, schema [, options])

Argumentumok

  • csvStr: A CSV-adatok sorát meghatározó KARAKTERLÁNC-kifejezés.
  • schema: Egy sztringkonstans vagy a schema_of_csv függvény meghívása.
  • options: Nem kötelező MAP<STRING,STRING> literál, amely irányelveket határoz meg.

Visszatérítések

A STRUCT mezőneveket és típusokat tartalmaz, amelyek megfelelnek a sémadefiníciónak, vagy egy VARIANT érték, ha a séma egyetlen Variant típus.

csvStr jól kell formálva lennie a schema és a options tekintetében. schema vesszővel tagolt oszlopnévként és adattípus-párként kell definiálni, például CREATE TABLE. A Databricks Runtime 16.4 és újabb verzióiban, a schema egyetlen VARIANT típusként is definiálható. Ha például from_csv CSV-rekordokat szeretne beszúrni egy VARIANT oszlopba, olvassa el az Adatok beszúrása a használatával from_csvcímű témakört.

A lehetőségek teljes listáját a CSV-ben találja.

options, ha meg van adva, az alábbiak bármelyike lehet:

  • sep (alapértelmezett ,): minden mezőhöz és értékhez beállít egy elválasztót. Ez az elválasztó lehet egy vagy több karakter.
  • encoding (alapértelmezett UTF-8): a CSV-fájlokat a megadott kódolási típus szerint dekódolja.
  • quote (alapértelmezett "): egyetlen karaktert állít be az idézett é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 com.databricks.spark.csv-től.
  • escape (alapértelmezett \): egyetlen karaktert állít be, amelyet az idézőjelek egy már idézett értéken belüli meneküléséhez használnak.
  • charToEscapeQuoteEscaping (alapértelmezett escape vagy \0): egyetlen karaktert állít be, amely az idézőjel menekülésének megkerülésére szolgál. Az alapértelmezett érték a feloldó karakter, ha escape a quote karakterek eltérőek, \0 ellenkező esetben.
  • comment (alapértelmezett üres sztring): egyetlen karaktert állít be a karakterrel kezdődő sorok kihagyásához. Alapértelmezés szerint le van tiltva.
  • header (alapértelmezett false): Olvasáshoz az első sort használja az oszlopok neveként. Íráshoz első sorként az oszlopok nevét írja. A CSV beépített függvényei figyelmen kívül hagyják ezt a beállítást.
  • enforceSchema (alapértelmezett true): Ha igaz értékre van állítva, a rendszer kényszerítetten alkalmazza a megadott vagy a következtetett sémát az adatforrásfájlokra, a CSV-fájlok fejléceit pedig figyelmen kívül hagyja. Ha a beállítás értéke hamis, akkor a rendszer ellenőrzi a sémát a CSV-fájlok összes fejléce alapján abban az esetben, ha a fejlécbeállítás értéke igaz. A séma mezőneveit és a CSV-fejlécekben lévő oszlopneveket a pozícióik alapján ellenőrizzük, figyelembe véve spark.sql.caseSensitive. Bár az alapértelmezett érték igaz, javasoljuk, hogy a helytelen eredmények elkerülése érdekében tiltsa le a enforceSchema beállítást.
  • inferSchema (alapértelmezett false): a bemeneti sémát automatikusan az adatokból következteti. Ehhez egy további adatátadásra van szükség.
  • samplingRatio (alapértelmezett 1.0): a sémakövető sorok töredékét határozza meg.
  • ignoreLeadingWhiteSpace (alapértelmezett false): egy jelző, amely jelzi, hogy ki kell-e hagyni a szóközöket az olvasási értékekből.
  • ignoreTrailingWhiteSpace (alapértelmezett false): egy jelző, amely jelzi, hogy ki kell-e hagyni az olvasott értékekből származó szóközöket.
  • nullValue (alapértelmezett üres sztring): 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értelmezett NaN): egy nem számérték sztring-ábrázolását állítja be.
  • positiveInf (alapértelmezett Inf): egy pozitív végtelenérték sztring-ábrázolását állítja be.
  • negativeInf (alapértelmezett -Inf): a negatív végtelen érték szöveges ábrázolását állítja be.
  • dateFormat (alapértelmezett yyyy-MM-dd): beállítja a dátumformátumot jelző sztringet. Az egyéni dátumformátumok a Datetime-minták formátumait követik. Ez a dátumtípusra vonatkozik.
  • timestampFormat (alapértelmezett yyyy-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ák formátumait követik. Ez az időbélyeg típusára vonatkozik.
  • maxColumns (alapértelmezett 20480): meghatározza, hogy egy rekord hány oszlopot tartalmazhat.
  • maxCharsPerColumn (alapértelmezett -1): a megadott olvasási értékekhez megengedett karakterek maximális számát határozza meg. Alapértelmezés szerint -1, ami korlátlan hosszt jelent
  • unescapedQuoteHandling (alapértelmezett STOP_AT_DELIMITER): azt határozza meg, hogy a CSV-elemző hogyan kezeli az értékeket kibontatlan idézőjelekkel.
    • STOP_AT_CLOSING_QUOTE: Ha a bemenetben nem definiált idézőjelek találhatók, halmozza fel az idézőjelet, és folytassa az érték idézőjelként való elemzését, amíg meg nem talál egy záró idézőjelet.
    • BACK_TO_DELIMITER: Ha nem kimenekített idézőjelek találhatók a bemenetben, az értéket tekintse idézőjel nélküli értéknek. Ezzel az elemző az aktuális elemzési érték összes karakterét összegyűjti, amíg meg nem találja a határolót. Ha az érték nem tartalmaz elválasztójelet, az elemző a karaktereket addig halmozza a bemenetből, amíg elválasztó vagy vonalvégződés nem található.
    • STOP_AT_DELIMITER: Ha nem kimenekített idézőjelek találhatók a bemenetben, az értéket tekintse idézőjel nélküli értéknek. Ezzel az elemző összes karaktert halmoz fel, amíg a határoló vagy egy sorvégződés nem található a bemenetben.
    • STOP_AT_DELIMITER: Ha a bemenetben nem beágyazott idézőjelek találhatók, a program kihagyja a megadott értékhez elemezett tartalmat, és ehelyett a nullValue megadott értéket állítja elő.
    • RAISE_ERROR: Ha a bemenetben nem kibontott idézőjelek találhatók, a függvény egy TextParsingException értéket ad.
  • mode (alapértelmezett PERMISSIVE): lehetővé teszi a sérült rekordok elemzés közbeni kezelését. A következő kis- és nagybetűfüggetlen módokat támogatja. A Spark oszlopmetszés során csak a szükséges oszlopokat próbálja elemezni a CSV-ben. Ezért a sérült rekordok a szükséges mezők választéka 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 hibásan formázott sztringet egy , által columnNameOfCorruptRecordkonfigurált mezőbe helyezi, és null értékre állítja a hibásan formázott mezőket. A sérült rekordok megőrzéséhez egy felhasználó által definiált sémában beállíthat egy "columnNameOfCorruptRecord" nevű karakterlánc típusú mezőt. 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 tokennel rendelkező rekord nem tekinthető sérült rekordnak a CSV-ben. Amikor egy rekorddal találkozik, amely kevesebb tokenből áll, mint a séma hossza, null értéket állít be a plusz mezőkre. Amikor a rekord több tokennel rendelkezik, mint a séma hossza, elveti a felesleges tokeneket.
    • FAILFAST: kivételt eredményez, ha sérült rekordoknak felel meg.
  • columnNameOfCorruptRecord (az alapértelmezett érték az spark.sql.columnNameOfCorruptRecord): lehetővé teszi az PERMISSIVE mód által létrehozott hibás sztringet tartalmazó új mező átnevezését. Ez felülírja spark.sql.columnNameOfCorruptRecord.
  • multiLine (alapértelmezett false): Elemezze egy rekordot, amely több sorra is kiterjedhet.
  • locale (alapértelmezett en-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ó sorelválasztót határozza meg. A maximális hossz 1 karakter.
  • pathGlobFilter: nem kötelező glob minta, amely csak a mintának megfelelő elérési utakkal rendelkező fájlokat tartalmazza. A szintaxis a org.apache.hadoop.fs.GlobFilter-t követi. Ez nem változtatja meg a partíciófelderítés viselkedését.

Ha a mode beállítás értéke FAILFAST, Azure Databricks MALFORMED_RECORD_IN_PARSING, ha a bemenet nem felel meg a sémának.

Gyakori hibafeltételek

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}

> SELECT from_csv('abc', 'a INT', map('mode', 'FAILFAST'));
  Error: MALFORMED_RECORD_IN_PARSING