BigQuery中子查询别名隐式生成Struct是否符合预期及文档位置问询
关于BigQuery中子查询别名返回Struct的行为说明
一、是否为预期行为
这是完全符合预期的行为。在BigQuery中,当直接引用子查询(或表)的别名作为列时,系统会自动将该子查询的所有列打包成一个Struct类型返回,对应结构就是包含原列名和值的键值对,比如第一个查询里的{"a": 1, "b": 2}。
二、相关文档与标准依据
BigQuery官方文档说明
BigQuery的SQL语法规范中,关于表表达式引用的章节明确了这个逻辑:当仅使用表/子查询的别名作为列引用(而非别名.列名的形式)时,会生成一个包含该表所有字段的STRUCT,字段名与原表列名一一对应。
SQL标准关联
ANSI SQL并未直接定义这种行为,但这属于云数仓常见的SQL扩展特性,是现代SQL对嵌套数据类型支持的典型实现,目的是简化复杂嵌套结构的构造与引用。
三、第二个示例的结果说明
执行以下查询:
select t as x, t.*, 1 as y from (select 1 as a, 2 as b) t
返回结果包含三部分:
x列:Struct类型,值为{"a":1, "b":2},对应子查询t所有列打包后的结构a和b列:从子查询t中展开的原始列,值分别为1和2y列:常量列,值为1
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

