Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Gibt einen Strukturwert mit jsonStr und schema zurück.
Syntax
from_json(jsonStr, schema [, options])
Argumente
-
jsonStr: EinSTRINGAusdruck, der ein JSON-Dokument angibt. -
schema: EinSTRINGAusdruck oder Aufruf derschema_of_jsonFunktion. -
options: Ein optionalesMAP<STRING,STRING>-Literal, das Richtlinien angibt.
jsonStr sollte in Bezug auf schema und options wohlgeformt sein.
Die schema müssen als kommagetrennte Spaltennamen und Datentyppaare definiert werden, ähnlich dem Format in CREATE TABLE. Vor Databricks Runtime 12.2 muss schema ein Literal sein.
Alternativ können Sie from_json mit Lakeflow Spark Declarative Pipelines das Schema automatisch ableiten und weiterentwickeln, indem Sie schema auf NULL festlegen und einen schemaLocationKey angeben. Beispiele finden Sie unter Schema mit from_json in Pipelines ableiten und weiterentwickeln.
Hinweis
Bei den Spalten- und Feldnamen in schema wird die Groß-/Kleinschreibung beachtet. Sie müssen genau mit den Namen in 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(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(StandardwertPERMISSIVE): 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 durchcolumnNameOfCorruptRecordkonfiguriertes Feld eingefügt, und die falsch formatierten Felder werden auf NULL festgelegt. Um beschädigte Datensätze beizubehalten, können Sie ein Zeichenfolgenfeld namenscolumnNameOfCorruptRecordin einem benutzerdefinierten Schema festlegen. Wenn ein Schema das Feld nicht enthält, werden beschädigte Datensätze während des Parsings 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.columnNameOfCorruptRecordangegebene Wert): Hiermit wird das Umbenennen des neuen Felds mit der nicht wohlgeformten Zeichenfolge ermöglicht, das imPERMISSIVE-Modus erstellt wurde. Dadurch wirdspark.sql.columnNameOfCorruptRecordaußer Kraft gesetzt. -
dateFormat(Standardformatyyyy-MM-dd): Hiermit wird die Zeichenfolge festgelegt, die ein Datumsformat angibt. Benutzerdefinierte Datumsformate folgen den Formaten der Datum-Zeit-Muster. 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 der Datum-Zeit-Muster. 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 undmultiLineauftruefestgelegt ist, wird die Codierung automatisch erkannt. -
lineSep(standardmäßig deckt alle\r,\r\nund\nab): 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):setsHiermit 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 (Not-A-Number) als zulässige Gleitkommawerte ermöglicht:-
+INFfür positiv Unendlich sowie als Alias von+InfinityundInfinity. -
-INFfür negativ Unendlich (Alias-Infinity). -
NaNfür andere nicht-numerische Werte, z. B. das Ergebnis einer Division durch 0.
-
-
readerCaseSensitive(Standardwerttrue): Gibt das Verhalten der Groß-/Kleinschreibung an, wennrescuedDataColumnaktiviert 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
Rückgabe
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}