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 één teken in dat wordt gebruikt voor escape-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 het is ingesteld op true, wordt het opgegeven of afgeleide schema geforceerd toegepast op gegevensbestanden en worden headers in CSV-bestanden genegeerd. Als de optie is ingesteld op onwaar, wordt het schema gevalideerd voor alle headers in CSV-bestanden in het geval dat de headeroptie is ingesteld op waar. Veldnamen in het schema en kolomnamen in CSV-koppen worden gecontroleerd door hun posities rekening houdend metspark.sql.caseSensitive
hun posities. Hoewel de standaardwaarde waar is, is het raadzaam om de optie enforceSchema uit te schakelen om onjuiste resultaten te voorkomen.inferSchema
(standaardfalse
): hiermee wordt het invoerschema automatisch afgeleid van gegevens. Hiervoor is één extra pass over de gegevens vereist.samplingRatio
(standaard 1.0): definieert fractie van rijen die worden gebruikt voor het uitstellen van schema's.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): 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 betekentunescapedQuoteHandling
(standaardSTOP_AT_DELIMITER
): definieert hoe de CSV-parser waarden verwerkt met niet-gescaped 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 onopgemaakte aanhalingstekens worden gevonden in de invoer, wordt de inhoud die voor de opgegeven waarde wordt geparseerd, overgeslagen en wordt de ingestelde waarde in plaats daarvannullValue
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 het verwijderen van kolommen. 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 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
): staat het wijzigen van de naam van het nieuwe veld toe met een ongeldige tekenreeks die is gemaakt doorPERMISSIVE
de 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 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}