Freigeben über


from_json-Funktion

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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 Aufruf schema_of_json Funktion.
  • options: Ein optionales MAP<STRING,STRING>-Literal, das Anweisungen angibt.

jsonStr sollte in Bezug auf schema und options wohlgeformt sein.

schema muss als durch Trennzeichen getrennte Spaltennamen und Datentyppaare definiert werden, ähnlich wie das in CREATE TABLE. Vor Databricks Runtime 12.2 muss schema ein Literal sein.

Hinweis

Bei den Spalten- und Feldnamen schema wird die Groß-/Kleinschreibung beachtet und muss genau mit den Namen jsonStr übereinstimmen. Um JSON-Felder zuzuordnen, die sich nur im Fall unterscheiden, können Sie die resultierende Struktur in unterschiedliche Feldnamen umwandeln . Weitere Informationen finden Sie in den Beispielen .

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 LTS und höher

Gibt zurück

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

Beispiele

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