Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Retourneert een struct-waarde met de jsonStr en schema.
Syntaxis
from_json(jsonStr, schema [, options])
Argumenten
-
jsonStr: EenSTRINGexpressie die een json-document opgeeft. -
schema: EenSTRINGexpressie of aanroep vanschema_of_jsonfunctie. -
options: Een optionele letterlijkeMAP<STRING,STRING>waarde die instructies aangeeft.
jsonStr moet goed vormgegeven zijn met betrekking tot schema en options.
De schema moet worden gedefinieerd als door komma's gescheiden kolomnamen en gegevenstypeparen, vergelijkbaar met de indeling die wordt gebruikt in CREATE TABLE. Vóór Databricks Runtime 12.2 schema moet een letterlijke waarde zijn.
U kunt from_json ook met de declaratieve pijplijnen van Lakeflow gebruiken om automatisch het schema af te leiden en te ontwikkelen door schema op NULL in te stellen en een schemaLocationKey op te geven. Voor voorbeelden, zie from_json.
Notitie
De kolom- en veldnamen in schema hoofdlettergevoelig zijn en moeten exact overeenkomen met de namen in jsonStr.
Als u JSON-velden wilt toewijzen die alleen verschillen in het geval, kunt u de resulterende struct naar afzonderlijke veldnamen casten .
Zie Voorbeelden voor meer informatie.
options, indien opgegeven, kan een van de volgende zijn:
-
primitivesAsString(standaardfalse): interpreteert alle primitieve waarden als een tekenreeks type. -
prefersDecimal(standaardfalse): interpreteert alle drijvende-kommawaarden als een decimaal type. Als de waarden niet in decimalen passen, worden ze afgeleid als dubbele waarden. -
allowComments(standaardfalse): negeert opmerking in Java- en C++-stijl in JSON-records. -
allowUnquotedFieldNames(standaardfalse): staat niet-vermelde JSON-veldnamen toe. -
allowSingleQuotes(standaardtrue): staat enkele aanhalingstekens toe naast dubbele aanhalingstekens. -
allowNumericLeadingZeros(standaardfalse): staat voorloopnullen toe in getallen (bijvoorbeeld00012). -
allowBackslashEscapingAnyCharacter(standaardfalse): staat het accepteren van het quoteren van alle tekens toe met behulp van het backslash-quotingmechanisme. -
allowUnquotedControlChars(standaardfalse): staat toe dat JSON-tekenreeksen ongeciteerde controlekarakters bevatten (ASCII-tekens met een waarde kleiner dan 32, inclusief tab- en regelinvoertekens) of niet. -
mode(standaardPERMISSIVE): staat een modus toe voor het verwerken van beschadigde records tijdens het parseren.-
PERMISSIVE: wanneer het tegen een beschadigd record aanloopt, plaatst het de onjuiste tekenreeks in een veld dat is geconfigureerd doorcolumnNameOfCorruptRecord, en stelt het onjuiste velden in op null. Als u beschadigde records wilt behouden, kunt u een tekenreekstypeveld met de naamcolumnNameOfCorruptRecordinstellen in een door de gebruiker gedefinieerd schema. Als een schema het veld niet heeft, worden beschadigde records verwijderd tijdens het parseren. Bij het afleiden van een schema wordt er impliciet eencolumnNameOfCorruptRecord-veld aan een uitvoerschema toegevoegd. -
FAILFAST: gooit een uitzondering wanneer deze beschadigde records tegenkomt.
-
-
columnNameOfCorruptRecord(standaard is de waarde die is opgegeven inspark.sql.columnNameOfCorruptRecord): staat toe om de naam te wijzigen van het nieuwe veld dat een malformede reeks heeft, gecreëerd door dePERMISSIVEmodus. Dit overschrijftspark.sql.columnNameOfCorruptRecord. -
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 tijdstempelformaat aangeeft. Aangepaste datumnotaties volgen de notaties bij Datum/tijd-patronen. Dit is van toepassing op het type tijdstempel. -
multiLine(standaardfalse): parseert één record, die meerdere regels per bestand kan omvatten. -
encoding(standaard is deze niet ingesteld): hiermee kunt u een standaard basis- of uitgebreide codering voor de JSON-bestanden geforceerd instellen. Bijvoorbeeld UTF-16BE, UTF-32LE. Als de codering niet is opgegeven enmultiLineis ingesteld optrue, wordt deze automatisch gedetecteerd. -
lineSep(standaard dekt alle\ren\r\n\n): definieert het regelscheidingsteken dat moet worden gebruikt voor parseren. -
samplingRatio(standaard 1.0): definieert het deel van de JSON-invoerobjecten die worden gebruikt voor het afleiden van schema's. -
dropFieldIfAllNull(standaardfalse): of kolom met alle null-waarden of lege matrix/struct tijdens schemadeductie moet worden genegeerd. -
locale(standaard isen-US):setseen landinstelling als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels. -
allowNonNumericNumbers(standaardtrue): staat JSON-parser toe om set tokens zonder getal (NaN) te herkennen als legale zwevende getalwaarden:-
+INFvoor positieve oneindigheid, evenals alias van+InfinityenInfinity. -
-INFvoor negatief oneindigheid), alias-Infinity. -
NaNvoor andere niet-nummers, zoals het resultaat van delen door nul.
-
-
readerCaseSensitive(standaardtrue): hiermee bepaalt u het hoofdlettergevoeligheidsgedrag wanneerrescuedDataColumnis ingeschakeld. Indien waar, redt u de gegevenskolommen waarvan de namen verschillen per geval van het schema; lees anders de gegevens op een niet-hoofdlettergevoelige manier. Beschikbaar in Databricks SQL en Databricks Runtime 13.3 LTS en hoger.
Retouren
Een struct met veldnamen en -typen die overeenkomen met de schemadefinitie.
Voorbeelden
> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}
> SELECT from_json('{"datetime":"26/08/2015"}', 'datetime Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"datetime":2015-08-26 00:00:00}
-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
{"a":1, "b":0.8}