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 schemadefinitie.
csvStr
moet goed worden gevormd met betrekking tot de schema
en options
.
schema
moet worden gedefinieerd als door komma's gescheiden kolomnaam 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 een enkel teken in dat wordt gebruikt voor het maskeren van waarden tussen aanhalingstekens, waarbij het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet u niet null maar een lege tekenreeks instellen. 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 namen van kolommen. -
enforceSchema
(standaardtrue
): Als dit is ingesteld op waar, wordt het opgegeven of afgeleide schema geforceerd toegepast op gegevensbronbestanden en worden headers in CSV-bestanden genegeerd. Als de optie is ingesteld op false, wordt het schema gevalideerd aan de hand van alle headers in CSV-bestanden, indien de header optie is ingesteld op true. Veldnamen in het schema en kolomnamen in CSV-kopteksten worden gecontroleerd op basis van hun posities, 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
): geeft het invoerschema automatisch af van gegevens. Hiervoor is één extra pass over de gegevens vereist. - nl-NL:
samplingRatio
(standaard 1.0): definieert het deel van de rijen dat wordt gebruikt voor het bepalen van schema's. -
ignoreLeadingWhiteSpace
(standaardfalse
): een vlag die aangeeft of voorloopspaties van waarden die worden gelezen, moeten worden overgeslagen. -
ignoreTrailingWhiteSpace
(standaard-false
): een vlag die aangeeft of er al dan niet volgspaties van waarden die worden gelezen, 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 vaste limiet van het aantal kolommen dat een record mag 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-ontleder waarden verwerkt met niet-geëscapede 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-ontkomen aanhalingstekens in de invoer worden gevonden, wordt de parsing van de inhoud voor de opgegeven waarde overgeslagen en wordt in plaats daarvan de waarde die innullValue
is ingesteld 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 vereiste kolommen in CSV te parseren onder kolomsnoei. 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 instellen in een door de gebruiker gedefinieerd schema. Als een schema het veld niet heeft, worden beschadigde records verwijderd tijdens het parseren. Een record met minder of meer tokens dan het schema is geen besmet record voor CSV. Wanneer deze voldoet aan een record met minder tokens dan de lengte van het schema, stelt u null in op extra velden. Wanneer de record meer tokens heeft dan de lengte van het schema, worden er extra tokens verwijderd. -
FAILFAST
: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
-
-
columnNameOfCorruptRecord
(standaard is de waarde die is opgegeven inspark.sql.columnNameOfCorruptRecord
): maakt het mogelijk om de naam van het nieuwe veld te wijzigen dat een door dePERMISSIVE
modus gecreëerde ongeldige tekenreeks heeft. 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 partitiedetectie 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}