from_json-Funktion

Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime

Gibt einen Strukturwert mit jsonStr und schema zurück.

Syntax

from_json(jsonStr, schema [, options])

Argumente

  • jsonStr: Ein STRING-Ausdruck, der ein JSON-Dokument angibt.
  • schema: Ein STRING-Ausdruck oder ein Aufruf der schema_of_json-Funktion.
  • options: Ein optionales MAP<STRING,STRING>-Literal, das Anweisungen angibt.

Vor Databricks Runtime 12.2 muss schema ein Literal sein.

Gibt zurück

Eine Struktur mit Feldnamen und Typen, die mit der Schemadefinition übereinstimmen.

jsonStr sollte in Bezug auf schema und options wohlgeformt sein. schema muss als Spaltenname/Datentyp-Paare mit Kommas als Trennzeichen definiert werden, z. B wie in CREATE TABLE.

options kann Folgendes sein (sofern angegeben):

  • primitivesAsString (Standardwert false): Hiermit werden alle primitiven Werte als Zeichenfolgentyp abgeleitet.
  • prefersDecimal (Standardwert false): Hiermit werden alle Gleitkommawerte als Dezimaltyp abgeleitet. Wenn die Werte nicht in decimal-Werten angegeben werden können, werden sie als double-Werte abgeleitet.
  • allowComments (Standardwertfalse): Hiermit werden Kommentare im Java- und C++-Stil in JSON-Datensätzen ignoriert.
  • allowUnquotedFieldNames (Standardwertfalse): Hiermit werden JSON-Feldnamen ohne Anführungszeichen zugelassen.
  • allowSingleQuotes (Standardwert true): Hiermit werden neben doppelten auch einfache Anführungszeichen zugelassen.
  • allowNumericLeadingZeros (Standardwertfalse): Hiermit werden führende Nullen in Zahlen zugelassen (z. B. 00012).
  • allowBackslashEscapingAnyCharacter (Standardwert false): Hiermit wird zugelassen, dass alle Zeichen mit umgekehrten Schrägstrichen als Escapezeichen in umgekehrte Schrägstriche eingeschlossen werden können.
  • allowUnquotedControlChars (Standardwert false): Hiermit wird festgelegt, ob JSON-Zeichenfolgen Steuerzeichen ohne Anführungszeichen (ASCII-Zeichen mit einem Wert kleiner als 32, einschließlich Tabstopp- und Zeilenvorschubzeichen) enthalten dürfen.
  • mode (Standardwert ist PERMISSIVE): Hiermit wird die Behandlung von beschädigten Datensätzen bei der Analyse festgelegt.
    • PERMISSIVE: Wenn ein beschädigter Datensatz erkannt wird, wird die falsch formatierte Zeichenfolge in ein durch columnNameOfCorruptRecord konfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Um beschädigte Datensätze beizubehalten, können Sie ein Zeichenfolgenfeld namens columnNameOfCorruptRecord in einem benutzerdefinierten Schema festlegen. Wenn das Feld nicht im Schema vorhanden ist, werden beschädigte Datensätze bei der Analyse gelöscht. Beim Ableiten eines Schemas wird in einem Ausgabeschema implizit ein columnNameOfCorruptRecord-Feld hinzugefügt.
    • FAILFAST: Hiermit wird eine Ausnahme ausgelöst, wenn beschädigte Datensätze erkannt werden.
  • columnNameOfCorruptRecord (Standardwert ist der in spark.sql.columnNameOfCorruptRecord angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das im PERMISSIVE-Modus erstellt wurde. Dadurch wird spark.sql.columnNameOfCorruptRecord überschrieben.
  • dateFormat (Standardformat yyyy-MM-dd): Hiermit wird die Zeichenfolge festgelegt, die ein Datumsformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den date-Typ.
  • timestampFormat (Standardformat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): Hiermit wird die Zeichenfolge festgelegt, die ein Zeitstempelformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten im Artikel zu datetime-Mustern. Dies gilt für den timestamp-Typ.
  • multiLine (Standardwert false): Hiermit wird ein Datensatz analysiert, der mehrere Zeilen pro Datei umfassen kann.
  • encoding (standardmäßig nicht festgelegt): Hiermit wird das Erzwingen einer grundlegenden oder erweiterten Standardcodierung für die JSON-Dateien ermöglicht, z. B. UTF-16BE, UTF-32LE. Wenn keine Codierung angegeben und multiLine auf true festgelegt ist, wird die Codierung automatisch erkannt.
  • lineSep (standardmäßig alle \r, \r\n und \n): Hiermit wird das Zeilentrennzeichen definiert, das für die Analyse verwendet werden soll.
  • samplingRatio (Standardwert 1.0): Hiermit wird der Anteil der JSON-Eingabeobjekte definiert, die für die Schemaableitung verwendet werden.
  • dropFieldIfAllNull (Standardwert false): Hiermit wird festgelegt, ob bei der Schemaableitung Spalten ignoriert werden sollen, die nur NULL-Werte oder leere Arrays bzw. Strukturen enthalten.
  • locale (Standardwert en-US): sets Hiermit wird ein Gebietsschema als Sprachtag im IETF BCP 47-Format festgelegt, das beispielsweise beim Analysieren von Datumsangaben und Zeitstempeln verwendet wird.
  • allowNonNumericNumbers (Standardwert true): Hiermit wird dem JSON-Parser das Erkennen von NaN-Token als zulässige Gleitkommawerte ermöglicht:
    • +INF für positiv Unendlich sowie als Alias von +Infinity und Infinity.
    • -INF für negativ Unendlich (Alias -Infinity).
    • NaN für andere NaN-Werte, z. B. das Ergebnis einer Division durch 0.
  • readerCaseSensitive (Standardwert true): Gibt das Verhalten der Groß-/Kleinschreibung an, wenn rescuedDataColumn aktiviert ist. Bei „True“ werden die Datenspalten wiederhergestellt, deren Namen in Bezug auf Groß- und Kleinschreibung vom Schema abweichen. Andernfalls werden die Daten ohne Beachtung der Groß- und Kleinschreibung gelesen. Verfügbar in Databricks SQL und Databricks Runtime 13.3 und höher.

Beispiele

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