Sdílet prostřednictvím


schema_of_json_agg agregační funkce

Platí pro:označeno jako ano Databricks SQL označeno jako ano Databricks Runtime 13.2 a vyšší

Vrátí kombinované schéma všech řetězců JSON ve skupině ve formátu DDL.

Syntaxe

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

Tuto funkci lze také vyvolat jako funkci okna pomocí OVER klauzule.

Argumenty

  • jsonStr STRING: Literál s JSON.
  • options: Volitelný MAP literál s klíči a hodnotami, které jsou STRING. Podrobnosti o možnostech najdete v from_json funkci.
  • cond: Volitelný BOOLEAN výraz filtrující řádky použité pro agregaci.

Návraty

Držící definici pole struktur s poli strun, kde názvy sloupců jsou odvozeny z odlišné sady klíčů. Hodnoty polí obsahují odvozené formátované typy SQL.

Schéma každého záznamu je spojeno dohromady podle názvu pole. Pokud mají dvě pole se stejným názvem jiný typ napříč záznamy, Azure Databricks používá nejméně společný typ. Pokud takový typ neexistuje, typ je odvozen jako STRING. Například INT a DOUBLE se stanou DOUBLE, zatímco STRUCT<i INT> a STRING se stanou STRING.

Schéma získané ze čtení sloupce JSON dat je stejné jako schéma odvozené z následujícího příkladu.

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

K odvození schématu jednoho JSON řetězce použijte schema_of_json funkci.

Příklady

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