我正在使用BigQuery中的Google Analytics(分析)原始数据。我正在尝试做一个简单的查询:选择所有字段,除了一个是RECORD类型的字段。我尝试过这样的事情:
SELECT * Except(hits.sourcePropertyInfo.*) FROM `project_id.dataset_id.ga_sessions_20191125`
但是我收到这样的错误
Syntax error: Expected ")" or "," but got "." at [1:21]
这些是我要排除的字段
field | type
-----------------------------------------------------------
hits.sourcePropertyInfo | RECORD
hits.sourcePropertyInfo.sourcePropertyDisplayName | STRING
hits.sourcePropertyInfo.sourcePropertyTrackingId | STRING
进行这种排除的正确方法是什么?
答案 0 :(得分:0)
我认为您无法删除嵌套结构的子字段。不过,您可以分多个步骤进行操作:
SELECT ga.* EXCEPT (hits),
hits.* EXCEPT (hits.sourcePropertyInfo)
FROM `project_id.dataset_id.ga_sessions_20191125` ga
答案 1 :(得分:0)
您必须使用子查询重新构建数组hits
的内容,并将其输出反馈回数组:
SELECT
* replace(
array(select as struct * except(sourcePropertyInfo) from unnest(hits))
AS hits
)
FROM `project.dataset.ga_sessions_20190101`
LIMIT 1000