Поделиться через


Агрегатная функция schema_of_json_agg

Область применения:флажок Databricks SQL флажок Databricks Runtime 13.2 и более поздних версий

Возвращает объединенную схему всех строк JSON в группе в формате DDL.

Синтаксис

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

Эту функцию также можно вызвать как функцию окна с помощью предложения OVER.

Аргументы

  • jsonStr: литерал STRING с JSON.
  • options: необязательный литерал MAP с ключами и значениями, STRING. Дополнительные сведения о параметрах см. в статье Функция from_json.
  • cond: необязательное BOOLEAN выражение, фильтрующее строки, используемые для агрегирования.

Возвраты

STRING, содержащий определение массива структур с n полями строк, в котором имена столбцов выводятся из уникального набора ключей JSON. Значения полей содержат производные форматированные типы SQL.

Схема каждой записи объединяется по имени поля. Если два поля с одинаковым именем имеют другой тип в записях, Azure Databricks использует наименее распространенный тип. Если такой тип не существует, тип является производным как .STRING Например, и стать, а INTDOUBLE также статьDOUBLE.STRUCT<i INT>STRINGSTRING

Схема, полученная из чтения столбца данных JSON, совпадает с той, которая получена из следующего.

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

Чтобы получить схему одной строки JSON, используйте функцию schema_of_json.

Примеры

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