from_csv
Functie
Van toepassing op: Databricks Databricks Runtime
Retourneert een struct-waarde met de csvStr
en schema
.
Syntaxis
from_csv(csvStr, schema [, options])
Argumenten
csvStr
: een TEKENREEKSexpressie die een rij met CSV-gegevens aangeeft.schema
: Een letterlijke tekenreeks of aanroep van schema_of_csv functie.options
: Een optionele MAP<STRING,STRING> literal die instructies specificeert.
Retourneert
Een STRUCT met veldnamen en typen die overeenkomen met de schemadefinitie.
csvStr
moet goed zijn gevormd met betrekking tot en schema
options
.
schema
moet worden gedefinieerd als door komma's gescheiden kolomnaam en gegevenstypeparen, zoals 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 uit een of meer tekens bestaan.encoding
(standaard UTF-8): decodeert de CSV-bestanden met het opgegeven coderingstype.quote
(standaard"
): stelt één teken in dat wordt gebruikt voor het ontsnappen van waarden tussen aanhalingstekens, waarbij het scheidingsteken deel kan uitmaken van de waarde. Als u aanhalingstekens wilt uitschakelen, moet u niet null instellen, maar een lege tekenreeks. Dit gedrag verschilt vancom.databricks.spark.csv
.escape
(standaard\
): hiermee stelt u één teken in dat wordt gebruikt voor escape-aanhalingstekens binnen een reeds opgegeven waarde.charToEscapeQuoteEscaping
(standaardescape
of\0
): stelt één teken in dat wordt gebruikt voor het ontsnappen van de escape voor het aanhalingsteken. De standaardwaarde is escapeteken wanneerescape
enquote
tekens verschillend zijn,\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. Deze is standaard uitgeschakeld.- header (standaard
false
): gebruikt de eerste regel als namen van kolommen. enforceSchema
(standaardtrue
): als dit is ingesteld op true, wordt het opgegeven of afgeleide schema geforceerd toegepast op gegevensbronbestanden en worden headers in CSV-bestanden genegeerd. Als de optie is ingesteld op onwaar, wordt het schema gevalideerd op basis van alle headers in CSV-bestanden in het geval dat de headeroptie is ingesteld op true. Veldnamen in het schema en kolomnamen in CSV-headers worden gecontroleerd door hun posities, rekening houdend metspark.sql.caseSensitive
. Hoewel de standaardwaarde true is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen.inferSchema
(standaardfalse
): leid het invoerschema automatisch af uit gegevens. Hiervoor is één extra doorgang over de gegevens vereist.samplingRatio
(standaard 1.0): definieert het deel van de rijen dat wordt gebruikt voor schema-inferatie.ignoreLeadingWhiteSpace
(standaardfalse
): een vlag die aangeeft of voorloopspaties van waarden die worden gelezen, moeten worden overgeslagen.ignoreTrailingWhiteSpace
(standaardfalse
): een vlag die aangeeft of volgspaties van waarden die worden gelezen, moeten worden overgeslagen.nullValue
(standaard lege tekenreeks): hiermee stelt u de tekenreeksweergave van een null-waarde in.emptyValue
(standaard lege tekenreeks): hiermee stelt u 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)
: hiermee stelt u de tekenreeksweergave van een negatieve oneindigheidswaarde in.dateFormat
(standaardyyyy-MM-dd
): hiermee stelt u de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties in Datum/tijd-patronen. Dit geldt voor 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 in Datum/tijd-patronen. Dit is van toepassing op het tijdstempeltype.maxColumns
(standaard20480
): definieert een vaste limiet voor het aantal kolommen dat een record mag bevatten.maxCharsPerColumn
(standaard -1): definieert het maximum aantal tekens dat is toegestaan voor een opgegeven waarde die wordt gelezen. Standaard is het -1, wat een onbeperkte lengte betekentunescapedQuoteHandling
(standaardSTOP_AT_DELIMITER
): definieert hoe de CSV-parser waarden verwerkt met aanhalingstekens zonder aanhalingstekens.STOP_AT_CLOSING_QUOTE
: als aanhalingstekens zonder 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 afsluitende aanhalingsteken wordt gevonden.BACK_TO_DELIMITER
: Als aanhalingstekens zonder opmaak worden gevonden in de invoer, beschouwt u de waarde als een waarde zonder aanhalingstekens. Hierdoor worden in de parser alle tekens van de huidige geparseerde waarde verzameld totdat het scheidingsteken wordt gevonden. Als er geen scheidingsteken in de waarde wordt gevonden, blijft de parser tekens uit de invoer verzamelen totdat een scheidingsteken of regeleinde wordt gevonden.STOP_AT_DELIMITER
: Als aanhalingstekens zonder opmaak worden gevonden in de invoer, beschouwt u de waarde als een waarde zonder aanhalingstekens. Hierdoor worden alle tekens in de parser verzameld totdat het scheidingsteken of een regeleinde wordt gevonden in de invoer.STOP_AT_DELIMITER
: Als er aanhalingstekens worden gevonden in de invoer, wordt de inhoud die voor de opgegeven waarde is geparseerd, overgeslagen en wordt in plaats daarvan de ingesteldenullValue
waarde geproduceerd.RAISE_ERROR
: als er aanhalingstekens met een ongeldige aanhalingsteken worden gevonden in de invoer, wordt eenTextParsingException
gegenereerd.
mode
(standaardPERMISSIVE
): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren. Het ondersteunt de volgende niet-hoofdlettergevoelige modi. Spark probeert alleen vereiste kolommen in CSV te parseren onder kolomsnoeien. Daarom kunnen beschadigde records 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 schema is geen beschadigde record naar 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 met een ongeldige tekenreeks die doorPERMISSIVE
de modus is gemaakt. Dit overschrijftspark.sql.columnNameOfCorruptRecord
.multiLine
(standaard):false
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 bij 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
op . 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}