适用于
Databricks SQL
、Databricks Runtime 13.2 及更高版本
以 DDL 格式返回组中所有 JSON 字符串的组合架构。
语法
schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]
参数
-
jsonStr:具有STRING的JSON字面量。 -
options:一个可选的MAP字面量,其键和值为STRING。 有关选项的详细信息,请参阅from_json函数。 -
cond:一个可选的BOOLEAN表达式,可筛选用于聚合的行。
返回
一个包含结构数组定义的 STRING,具有列名称派生自非重复 n 键集的字符串的 JSON 字段。
这些字段值保存派生的格式化 SQL 类型。
每个记录的架构按字段名称合并在一起。
如果两个具有相同名称的字段跨记录具有不同的类型,则 Azure Databricks 将使用最不常见的类型。
如果不存在此类类型,则类型将派生为 STRING。
例如,INT 和 DOUBLE 变为 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>>