schema_of_json_agg
-Aggregatfunktion
Gilt für: Databricks SQL Databricks Runtime 13.2 und höher
Gibt das kombinierte Schema von allen JSON-Zeichenfolgen in einer Gruppe im DDL-Format zurück.
Syntax
schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]
Diese Funktion kann auch mithilfe der OVER
-Klausel als Fensterfunktion aufgerufen werden.
Argumente
jsonStr
: EinSTRING
-Literal mitJSON
.options
: Ein optionalesMAP
-Literal, bei dem Schlüssel und Werte vom TypSTRING
sind. Einzelheiten zu Optionen finden Sie unter from_json-Funktion.cond
: Ein optionalerBOOLEAN
-Ausdruck, der die für die Aggregation verwendeten Zeilen filtert.
Gibt zurück
Ein STRING
-Wert mit der Definition eines Arrays von Strukturen mit n
-Zeichenfolgenfeldern, in denen die Spaltennamen von den unterschiedlichen JSON
-Schlüsseln abgeleitet werden.
Die Feldwerte enthalten die abgeleiteten formatierten SQL Typen.
Das Schema jedes Datensatzes wird anhand des Feldnamens zusammengeführt.
Wenn zwei Felder mit demselben Namen in verschiedenen Datensätzen einen anderen Typ aufweisen, verwendet Azure Databricks den am wenigsten allgemeinen Typ.
Wenn kein solcher Typ vorhanden ist, wird der Typ als STRING
abgeleitet.
INT
und DOUBLE
werden beispielsweise zuDOUBLE
, STRUCT<i INT>
und STRING
hingegen zu STRING
.
Das Schema, das beim Lesen einer Spalte mit JSON
-Daten abgerufen wird, ist identisch mit dem Schema, das aus Folgendem abgeleitet wird.
SELECT * FROM json.`/my/data`;
Verwenden Sie die JSON
schema_of_json-Funktion, um das Schema einer einzelnen -Zeichenfolge abzuleiten.
Beispiele
> SELECT schema_of_json_agg(a) FROM VALUES('{"foo": "bar"}') AS data(a);
STRUCT<foo: STRING>
> SELECT schema_of_json_agg(a) FROM VALUES('[1]') AS data(a);
ARRAY<BIGINT>
> CREATE TEMPORARY VIEW data(a) AS VALUES
('{"foo": "bar", "wing": {"ding": "dong"}}'),
('{"top": "level", "wing": {"stop": "go"}}')
> SELECT schema_of_json_agg(a) FROM data;
STRUCT<foo: STRING,top: STRING,wing: STRUCT<ding: STRING, stop: STRING>>