from_json functie (Databricks SQL)

Retourneert een struct-waarde met de jsonStr en schema.

Syntaxis

from_json(jsonStr, schema [, options])

Argumenten

  • jsonStr: een TEKENREEKS-expressie die een json-document opgeeft.
  • schema: Een letterlijke tekenreeks of aanroep van schema_of_json functie (Databricks SQL).
  • options: Een optionele MAP<STRING, letterlijke tekenreeks> die instructies aangeeft.

Retouren

Een struct met veldnamen en typen die overeenkomen met de schemadefinitie.

jsonStr moet goed worden gevormd met betrekking tot schema en 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:

  • primitivesAsString (standaard false): hiermee worden alle primitieve waarden afgeleid als tekenreekstype.
  • prefersDecimal (standaard false): hiermee worden alle drijvendekommawaarden afgeleid als een decimaal type. Als de waarden niet in decimaal passen, worden ze afgeleid als dubbele waarden.
  • allowComments (standaard false): negeert opmerking in Java- en C++-stijl in JSON-records.
  • allowUnquotedFieldNames (standaard false): staat niet-geciteerde JSON-veldnamen toe.
  • allowSingleQuotes (standaard true): staat enkele aanhalingstekens toe naast dubbele aanhalingstekens.
  • allowNumericLeadingZeros (standaard false): staat voorloopnullen in getallen toe (bijvoorbeeld 00012).
  • allowBackslashEscapingAnyCharacter (standaard false): staat het accepteren van het aanhalingsteken van alle tekens toe met behulp van backslash-quotingmechanisme.
  • allowUnquotedControlChars (standaard false): staat JSON-tekenreeksen toe om niet-aanhalingstekens (ASCII-tekens met waarde kleiner dan 32, inclusief tab- en regelinvoertekens) te bevatten of niet.
  • mode (standaard PERMISSIVE): staat een modus toe voor het omgaan met beschadigde records tijdens het parseren.
    • PERMISSIVE: wanneer deze voldoet aan een beschadigde record, plaatst u de ongeldige tekenreeks in een veld dat is geconfigureerd door columnNameOfCorruptRecorden stelt u ongeldige velden in op null. Als u beschadigde records wilt behouden, kunt u een tekenreekstypeveld instellen met de naam columnNameOfCorruptRecord in een door de gebruiker gedefinieerd schema. Als een schema het veld niet heeft, worden er beschadigde records verwijderd tijdens het parseren. Bij het uitstellen van een schema wordt impliciet een columnNameOfCorruptRecord veld in een uitvoerschema toegevoegd.
    • FAILFAST: genereert een uitzondering wanneer deze voldoet aan beschadigde records.
  • columnNameOfCorruptRecord (de standaardwaarde is de opgegeven spark.sql.columnNameOfCorruptRecordwaarde): staat toe dat de naam van het nieuwe veld wordt gewijzigd met een ongeldige tekenreeks die is gemaakt door PERMISSIVE de modus. Dit overschrijft spark.sql.columnNameOfCorruptRecord.
  • dateFormat (standaard yyyy-MM-dd): hiermee stelt u de tekenreeks in die een datumnotatie aangeeft. Aangepaste datumnotaties volgen de notaties op Datum/tijd-patronen (Databricks SQL). Dit is van toepassing op het datumtype.
  • timestampFormat (standaard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): hiermee stelt u de tekenreeks in die een tijdstempelnotatie aangeeft. Aangepaste datumnotaties volgen de notaties op Datum/tijd-patronen (Databricks SQL). Dit is van toepassing op het tijdstempeltype.
  • multiLine (standaard false): parseert één record, die meerdere regels per bestand kan omvatten.
  • encoding (standaard is deze niet ingesteld): staat toe om een standaard basis- of uitgebreide codering voor de JSON-bestanden geforceerd in te stellen. Bijvoorbeeld UTF-16BE, UTF-32LE. Als de codering niet is opgegeven en multiLine is ingesteld op true, wordt deze automatisch gedetecteerd.
  • lineSep(standaard dekt alle \r\r\n en\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 opmaken van schema's.
  • dropFieldIfAllNull (standaard false): of de kolom met alle null-waarden of lege matrix/struct tijdens schemadeductie moet worden genegeerd.
  • locale (standaard is en-US): sets een landinstelling als taaltag in IETF BCP 47-indeling. Dit wordt bijvoorbeeld gebruikt tijdens het parseren van datums en tijdstempels.
  • allowNonNumericNumbers (standaard true): staat JSON-parser toe om set tokens zonder getal (NaN) te herkennen als wettelijke zwevende getalwaarden:
    • +INF voor positieve oneindigheid, evenals alias van +Infinity en Infinity.
    • -INF voor negatieve oneindigheid), alias -Infinity.
    • NaN voor andere not-a-numbers, zoals het resultaat van deling door nul.

Voorbeelden

> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
 {1,0.8}

> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {2015-08-26 00:00:00}