Fonction d’agrégation schema_of_json_agg

S’applique à :coché oui Databricks SQL coché oui Databricks Runtime 13.2 et versions ultérieures

Retourne le schéma combiné de toutes les chaînes JSON dans un groupe au format DDL.

Syntaxe

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

Cette fonction peut également être appelée en tant que fonction de fenêtre à l’aide de la clause OVER.

Arguments

  • jsonStr : littéral STRING avec JSON.
  • options : littéral MAP facultatif dont les clés et les valeurs sont STRING. Pour plus de détails sur les options, consultez la fonction from_json.
  • cond : expression de langageBOOLEAN facultative qui filtre les lignes utilisées pour l’agrégation.

Retours

STRING contenant une définition d’un tableau de structs avec des champs de chaînes n où les noms des colonnes sont dérivés des ensemble de clés JSON distincts. Les valeurs de champ contiennent les types SQL mis en forme dérivés.

Le schéma de chaque enregistrement est fusionné par nom de champ. Lorsque deux champs portant le même nom ont un type différent entre les enregistrements, Azure Databricks utilise le type le moins courant. Lorsqu’il n’existe aucun type de ce type, le type est dérivé en tant que STRING. Par exemple, INT et DOUBLE deviennent DOUBLE, tandis que STRUCT<i INT> et STRING deviennent STRING.

Le schéma obtenu à partir de la lecture d’une colonne de données JSON est le même que celui dérivé de ce qui suit.

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

Pour dériver le schéma d’une chaîne unique JSON, utilisez la fonction schema_of_json.

Exemples

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