from_jsonfunktion (Databricks SQL)

Returnerar ett struct-värde med jsonStr och schema .

Syntax

from_json(jsonStr, schema [, options])

Argument

  • jsonStr: Ett STRING-uttryck som anger en rad med CSV-data.
  • schema: En STRING-literal eller anrop schema_of_json schema
  • options: Ett valfritt MAP < STRING,STRING > literal specifying-direktiv.

Returer

En struct med fältnamn och typer som matchar schemadefinitionen.

jsonStr bör vara väl utformad med avseende på schema och options . schema måste definieras som kommaavgränsade kolumnnamn och datatyppar som används i till exempel CREATE TABLE .

options, om det finns, kan vara något av följande:

  • primitivesAsString (standard false ): härrar alla primitiva värden som en strängtyp.
  • prefersDecimal (standard false ): häravser alla flyttalsvärden som en decimaltyp. Om värdena inte får plats i decimaler häravskar det dem som dubbla.
  • allowComments (standard false ): ignorerar java- och C++-stilkommentarer i JSON-poster.
  • allowUnquotedFieldNames (standard false ): tillåter ociterade JSON-fältnamn.
  • allowSingleQuotes (standard true ): tillåter enkla citattecken utöver dubbla citattecken.
  • allowNumericLeadingZeros (standard false ): tillåter inledande nollor i tal (till exempel 00012 ).
  • allowBackslashEscapingAnyCharacter (standard false ): tillåter citattecken av alla tecken med hjälp av omslagsfraser.
  • allowUnquotedControlChars (standard ): tillåter att JSON-strängar innehåller icke-citattecken (ASCII-tecken med ett värde som är mindre än 32, inklusive tabb- och false radmatningstecken) eller inte.
  • mode (standard PERMISSIVE ): tillåter ett läge för hantering av skadade poster under parsning.
    • PERMISSIVE: när den uppfyller en skadad post placerar den felaktiga strängen i ett fält som konfigurerats av och anger felaktiga columnNameOfCorruptRecord fält till null. Om du vill behålla skadade poster kan du ange ett strängtypsfält med columnNameOfCorruptRecord namnet i ett användardefinierat schema. Om ett schema inte har fältet tar det bort skadade poster under parsningen. När ett schema härförs lägger den implicit till ett fält columnNameOfCorruptRecord i ett utdataschema.
    • FAILFAST: kastar ett undantag när det uppfyller skadade poster.
  • columnNameOfCorruptRecord (Standardvärdet är det värde som anges i spark.sql.columnNameOfCorruptRecord ): tillåter namnbyte på det nya fältet med felaktig sträng som skapats av PERMISSIVE läge. Detta åsidosätter spark.sql.columnNameOfCorruptRecord .
  • dateFormat (standard yyyy-MM-dd ): anger strängen som anger ett datumformat. Anpassade datumformat följer formaten i Databricks SQL datetime-mönster. Detta gäller för datumtypen.
  • timestampFormat (standard yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] ): anger strängen som anger ett tidsstämpelformat. Anpassade datumformat följer formaten i Databricks SQL datetime-mönster. Detta gäller för tidsstämpeltypen.
  • multiLine (standard false ): parsar en post, som kan sträcka sig över flera rader, per fil.
  • encoding (som standard är det inte inställt): tillåter att en standard grundläggande eller utökad kodning för JSON-filerna med två eller flera anges. Till exempel UTF-16BE, UTF-32LE. Om kodningen inte har multiLine angetts och är inställd true på identifieras den automatiskt.
  • lineSep (Standard omfattar alla \r , \r\n och ): \n definierar den radavgränsare som ska användas för parsning.
  • samplingRatio (standard 1.0): definierar bråkdelen av de JSON-indataobjekt som används för schemainferens.
  • dropFieldIfAllNull (standard false ): om du vill ignorera kolumnen med alla null-värden eller en tom matris/struct under schemainferens.
  • locale (standard är en-US ): sets en språkinställning som språktagg i IETF BCP 47-format. Detta används till exempel vid parsning av datum och tidsstämplar.
  • allowNonNumericNumbers (standard ): tillåter JSON-parser att identifiera en uppsättning true not-a-number ( NaN ) tokens som juridiskt flytande talvärden:
    • +INF för positiv oändlighet, samt alias för +Infinity och Infinity .
    • -INF för negativ oändlighet), alias -Infinity .
    • NaN för andra inte-a-tal, till exempel resultatet av division med noll.

Exempel

> 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}