BigQuery中为UNNEST(hits)输出列添加hits.前缀的方法咨询
解决方案
给UNNEST(hits)返回的结果指定别名hits,同时排除原表中原本的数组类型hits列避免重名冲突即可,示例写法如下:
#standardSQL SELECT * EXCEPT (hits), hits FROM `{project_id}.{dataset_id}.{table_name}`, UNNEST(hits) AS hits
原理解释
- 原查询没有给
UNNEST的结果指定别名,展开的STRUCT结构字段会直接提升到结果顶层,返回page、eventInfo这类无前缀的字段 - 给
UNNEST结果指定别名hits后,所有展开的字段都会作为hitsSTRUCT的子字段返回,自动生成hits.page这类符合要求的字段名 - 原表本身包含数组类型的
hits列,用* EXCEPT (hits)可以排除原数组列,避免和别名生成的STRUCT类型hits重名报错
如果不需要保留原表除hit外的其他字段,也可以简化为以下写法,返回的所有字段都会带hits.前缀:
#standardSQL SELECT hits FROM `{project_id}.{dataset_id}.{table_name}`, UNNEST(hits) AS hits
内容的提问来源于stack exchange,提问作者ChrisOram
相关产品推荐
相关产品推荐

