Dela via


schema_of_json_agg mängdfunktion

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 13.2 och senare

Returnerar det sammanslagna schema-värdet för alla JSON-strängar i en grupp i DDL-format.

Syntax

schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]

Den här funktionen kan också anropas som en window funktion med hjälp av OVER-satsen.

Argument

  • jsonStr: En STRING literal med JSON.
  • options: En valfri MAP-literal med nycklar och värden där values är STRING. Mer information om alternativ finns i funktionen from_json.
  • cond: Ett valfritt BOOLEAN uttryck som filtrerar de rader som används för aggregering.

Returer

En STRING som innehåller en definition av en matris av strukturer med n strängfält where vars column namn härleds från den distinkta set av JSON nycklar. Fältet values innehåller de härledda formaterade SQL-typerna.

schema för varje post sammanfogas med fältnamn. När två fält med samma namn har en annan typ mellan poster använder Azure Databricks den minst vanliga typen. När det inte finns någon sådan typ härleds typen som en STRING. Till exempel INT och DOUBLE bli DOUBLE, medan STRUCT<i INT> och STRING blir STRING.

Den schema som hämtas från att läsa en column av JSON data är densamma som den som härleds från följande.

SELECT * FROM json.`/my/data`;

Om du vill härleda schema av en enda JSON sträng använder du funktionen schema_of_json.

Exempel

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