from_csv
-functie
Van toepassing op: Databricks SQL Databricks Runtime
Retourneert een struct-waarde met de csvStr
en schema
.
Syntaxis
from_csv(csvStr, schema [, options])
Argumenten
-
csvStr
: Een TEKENREEKS-expressie die een rij met CSV-gegevens opgeeft. -
schema
: een letterlijke tekenreeks of aanroep van schema_of_csv functie. -
options
: Een optionele MAP<STRING, letterlijke tekenreeks> die instructies specificeert.
Retouren
Een STRUCT met veldnamen en -typen die overeenkomen met de schema definitie.
csvStr
moet goed worden gevormd met betrekking tot de schema
en options
.
schema
moet worden gedefinieerd als door komma's gescheiden column naam- en gegevenstypeparen, zoals wordt gebruikt in bijvoorbeeld CREATE TABLE
.
options
, indien opgegeven, kan een van de volgende zijn:
-
sep
(standaard,
): stelt een scheidingsteken in voor elk veld en elke waarde. Dit scheidingsteken kan een of meer tekens zijn. -
encoding
(standaard UTF-8): decodeert de CSV-bestanden op basis van het opgegeven coderingstype. -
quote
(standaard"
): stelt één teken in dat wordt gebruikt voor escape-aanhalingstekens valueswhere het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet set een lege tekenreeks zijn in plaats van null. Dit gedrag verschilt vancom.databricks.spark.csv
. -
escape
(standaard\
): hiermee stelt u één teken in dat wordt gebruikt voor escape-aanhalingstekens binnen een al aanhalingstekens. -
charToEscapeQuoteEscaping
(standaardescape
of\0
): stelt één teken in dat wordt gebruikt om de escape voor het aanhalingsteken te ontsnappen. De standaardwaarde is escapeteken wanneerescape
enquote
tekens verschillen,\0
anders. -
comment
(standaard lege tekenreeks): hiermee stelt u één teken in dat wordt gebruikt voor het overslaan van regels die beginnen met dit teken. Dit is standaard uitgeschakeld. - header (standaard
false
): gebruikt de eerste regel als de namen van columns. -
enforceSchema
(standaard-true
): als deze set waar is, wordt de opgegeven of afgeleide schema geforceerd toegepast op gegevensbronbestanden en worden headers in CSV-bestanden genegeerd. Als de optie set op onwaar staat, wordt de schema gevalideerd ten opzichte van alle headers in CSV-bestanden, in het geval dat de headeroptie set op waar staat. Veldnamen schema en column in de CSV-koppen worden op hun posities gecontroleerd, rekening houdend metspark.sql.caseSensitive
. Hoewel de standaardwaarde waar is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen. -
inferSchema
(standaardfalse
): bepaalt automatisch de invoer schema uit gegevens. Hiervoor is één extra pass over de gegevens vereist. -
samplingRatio
(standaard 1.0): definieert de fractie van rijen die worden gebruikt voor het afleiden van schema. -
ignoreLeadingWhiteSpace
(standaardfalse
): een indicator die aangeeft of voorloopspaties van values die gelezen worden, moeten worden overgeslagen of niet. -
ignoreTrailingWhiteSpace
(standaardfalse
): een vlag die aangeeft of de slepende spaties van values tijdens het lezen al dan niet moeten worden overgeslagen. -
nullValue
(standaard lege tekenreeks): stelt de tekenreeksweergave van een null-waarde in. -
emptyValue
(standaard lege tekenreeks): stelt de tekenreeksweergave van een lege waarde in. -
nanValue
(standaardNaN
): stelt de tekenreeksweergave van een niet-numerieke waarde in. -
positiveInf
(standaardInf
): stelt de tekenreeksweergave van een positieve oneindigheidswaarde in. -
negativeInf
(standaard-Inf)
: stelt de tekenreeksweergave van een negatieve oneindigheidswaarde in. -
dateFormat
(standaardyyyy-MM-dd
): stelt de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het datumtype. -
timestampFormat
(standaardyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): stelt de tekenreeks in die een tijdstempelnotatie aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type tijdstempel. -
maxColumns
(standaard20480
): definieert een harde limit van het aantal columns dat een record kan hebben. -
maxCharsPerColumn
(standaard -1): definieert het maximum aantal tekens dat is toegestaan voor elke opgegeven waarde die wordt gelezen. Standaard is het -1 wat een onbeperkte lengte betekent -
unescapedQuoteHandling
(standaardSTOP_AT_DELIMITER
): definieert hoe de CSV-parser values verwerkt met niet-ontsnapte aanhalingstekens.-
STOP_AT_CLOSING_QUOTE
: Als er onopgezichtige aanhalingstekens worden gevonden in de invoer, verzamelt u het aanhalingsteken en gaat u verder met het parseren van de waarde als een aanhalingsteken, totdat er een aanhalingsteken wordt gevonden. -
BACK_TO_DELIMITER
: Als er onopgemerkte aanhalingstekens worden gevonden in de invoer, kunt u de waarde beschouwen als een niet-aanhalingsteken. Hierdoor verzamelt de parser alle tekens van de huidige geparseerde waarde totdat het scheidingsteken is gevonden. Als er geen scheidingsteken in de waarde wordt gevonden, blijft de parser tekens uit de invoer accumuleren totdat een scheidingsteken of regeleinde is gevonden. -
STOP_AT_DELIMITER
: Als er onopgemerkte aanhalingstekens worden gevonden in de invoer, kunt u de waarde beschouwen als een niet-aanhalingsteken. Hierdoor verzamelt de parser alle tekens totdat het scheidingsteken of het einde van een regel in de invoer wordt gevonden. -
STOP_AT_DELIMITER
: Als er niet-gescaped aanhalingstekens worden gevonden in de invoer, wordt de inhoud voor de gespecificeerde waarde overgeslagen en wordt in plaats daarvan de waarde set innullValue
geproduceerd. -
RAISE_ERROR
: Als er onopgezichtige aanhalingstekens worden gevonden in de invoer, wordt er eenTextParsingException
gegenereerd.
-
-
mode
(standaardPERMISSIVE
): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren. Het ondersteunt de volgende hoofdlettergevoelige modi. Spark probeert alleen de vereiste columns in CSV te parseren tijdens het snoeien van column. Beschadigde records kunnen daarom verschillen op basis van de vereiste set velden. Dit gedrag kan worden beheerd doorspark.sql.csv.parser.columnPruning.enabled
(standaard ingeschakeld).-
PERMISSIVE
: wanneer deze voldoet aan een beschadigde record, plaatst u de ongeldige tekenreeks in een veld dat is geconfigureerd doorcolumnNameOfCorruptRecord
en stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kan een gebruiker een tekenreekstypeveld met de naam columnNameOfCorruptRecord set in een door de gebruiker gedefinieerde schema. Als een schema het veld niet heeft, worden corrupte records verwijderd tijdens het parseren. Een record met minder of meer tokens dan schema is geen beschadigde record naar CSV. Wanneer deze voldoet aan een record having minder tokens dan de lengte van de schema, wordt null ingesteld op extra velden. Wanneer de records meer tokens hebben dan de lengte van de schema, laat het extra tokens vallen. -
FAILFAST
: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
-
-
columnNameOfCorruptRecord
(standaard is de waarde die is opgegeven inspark.sql.columnNameOfCorruptRecord
): staat het wijzigen van de naam van het nieuwe veld toe having ongeldige tekenreeks die is gemaakt doorPERMISSIVE
modus. Dit overschrijftspark.sql.columnNameOfCorruptRecord
. -
multiLine
(standaardfalse
): parseert één record, die meerdere regels kan omvatten. -
locale
(standaarden-US
): stelt een landinstelling in als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels. -
lineSep
(standaard dekt alle\r
,\r\n
en\n
): definieert het regelscheidingsteken dat moet worden gebruikt voor parseren. De maximale lengte is 1 teken. -
pathGlobFilter
: een optioneel glob-patroon om alleen bestanden op te nemen met paden die overeenkomen met het patroon. De syntaxis volgtorg.apache.hadoop.fs.GlobFilter
. Het gedrag van partition detectie wordt niet gewijzigd.
Voorbeelden
> 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}