Freigeben über


schema_of_json_agg-Aggregatfunktion

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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: Ein STRING-Literal mit JSON.
  • options: Ein optionales MAP-Literal, bei dem Schlüssel und Werte vom Typ STRING sind. Einzelheiten zu Optionen finden Sie unter from_json-Funktion.
  • cond: Ein optionaler BOOLEAN-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 JSONschema_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>>