from_json
-Funktion
Gilt für: Databricks SQL 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
(Standardwertfalse
): Hiermit werden alle primitiven Werte als Zeichenfolgentyp abgeleitet.prefersDecimal
(Standardwertfalse
): 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
(Standardwerttrue
): Hiermit werden neben doppelten auch einfache Anführungszeichen zugelassen.allowNumericLeadingZeros
(Standardwertfalse
): Hiermit werden führende Nullen in Zahlen zugelassen (z. B.00012
).allowBackslashEscapingAnyCharacter
(Standardwertfalse
): Hiermit wird zugelassen, dass alle Zeichen mit umgekehrten Schrägstrichen als Escapezeichen in umgekehrte Schrägstriche eingeschlossen werden können.allowUnquotedControlChars
(Standardwertfalse
): 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 istPERMISSIVE
): 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 durchcolumnNameOfCorruptRecord
konfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Um beschädigte Datensätze beizubehalten, können Sie ein Zeichenfolgenfeld namenscolumnNameOfCorruptRecord
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 eincolumnNameOfCorruptRecord
-Feld hinzugefügt.FAILFAST
: Hiermit wird eine Ausnahme ausgelöst, wenn beschädigte Datensätze erkannt werden.
columnNameOfCorruptRecord
(Standardwert ist der inspark.sql.columnNameOfCorruptRecord
angegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das imPERMISSIVE
-Modus erstellt wurde. Dadurch wirdspark.sql.columnNameOfCorruptRecord
überschrieben.dateFormat
(Standardformatyyyy-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
(Standardformatyyyy-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
(Standardwertfalse
): 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 undmultiLine
auftrue
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
(Standardwertfalse
): Hiermit wird festgelegt, ob bei der Schemaableitung Spalten ignoriert werden sollen, die nur NULL-Werte oder leere Arrays bzw. Strukturen enthalten.locale
(Standardwerten-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
(Standardwerttrue
): Hiermit wird dem JSON-Parser das Erkennen vonNaN
-Token als zulässige Gleitkommawerte ermöglicht:+INF
für positiv Unendlich sowie als Alias von+Infinity
undInfinity
.-INF
für negativ Unendlich (Alias-Infinity
).NaN
für andere NaN-Werte, z. B. das Ergebnis einer Division durch 0.
readerCaseSensitive
(Standardwerttrue
): Gibt das Verhalten der Groß-/Kleinschreibung an, wennrescuedDataColumn
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}