schema_of_json_agg 聚合函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 13.2 及更高版本

以 DDL 格式返回组中所有 JSON 字符串的组合架构。

语法

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

还可以使用 OVER 子句将此函数作为窗口函数调用。

参数

  • jsonStr:具有 JSONSTRING 字面量。
  • options:一个可选的 MAP 字面量,其键和值为 STRING。 有关选项的详细信息,请参阅 from_json 函数
  • cond:一个可选的 BOOLEAN 表达式,可筛选用于聚合的行。

返回

一个包含结构数组定义的 STRING,具有列名称派生自非重复 JSON 键集的字符串的 n 字段。 这些字段值保存派生的格式化 SQL 类型。

每个记录的架构按字段名称合并在一起。 如果两个具有相同名称的字段跨记录具有不同的类型,则 Azure Databricks 将使用最不常见的类型。 如果不存在此类类型,则类型将派生为 STRING。 例如,INTDOUBLE 变为 DOUBLE,而 STRUCT<i INT>STRING 变为 STRING

从读取 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>>