schema_of_json_agg
聚合函数
适用于: Databricks SQL Databricks Runtime 13.2 及更高版本
以 DDL 格式返回组中所有 JSON 字符串的组合架构。
语法
schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]
还可以使用 OVER
子句将此函数作为窗口函数调用。
参数
jsonStr
:具有JSON
的STRING
字面量。options
:一个可选的MAP
字面量,其键和值为STRING
。 有关选项的详细信息,请参阅 from_json 函数。cond
:一个可选的BOOLEAN
表达式,可筛选用于聚合的行。
返回
一个包含结构数组定义的 STRING
,具有列名称派生自非重复 JSON
键集的字符串的 n
字段。
这些字段值保存派生的格式化 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>>