Sdílet prostřednictvím


schema_of_json_agg agregační funkce

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 13.2 a novější

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

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

Návraty

A STRING holding a definition of an array of structs with n fields of strings where the column names are derived from the distinct set of JSON keys . Hodnoty polí obsahují odvozené formátované typy SQL.

Schéma každého záznamu se sloučí 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 stát DOUBLEse , zatímco STRUCT<i INT> a STRING stát STRINGse .

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 funkci schema_of_json.

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