【发布时间】:2017-04-09 03:30:11
【问题描述】:
Google Analytics BigQuery 表的结构如下(旧版 SQL 表示法 - 仅显示相关字段):
visitId: INTEGER
hits: RECORD/REPEATED
hits.hour: INTEGER
在这样一张表上,以下查询运行良好:
SELECT
visitId,
MIN(h.hour) AS firstHitHour
FROM
`my-table.ga_sessions_20161122`, UNNEST(hits) AS h
GROUP BY
visitId
但是使用这种替代语法:
SELECT
visitId,
(SELECT MIN(hour) FROM UNNEST(hits)) as firstHitHour
FROM
`my-table.ga_sessions_20161122`
GROUP BY
visitId
触发以下错误:
错误:UNNEST 表达式引用了既不分组也不聚合的列命中
我知道UNNEST(hits) 必须以某种方式分组或聚合,但由于此列是array (repeated),它究竟是什么意思?
如果我尝试按照要求“对hits 列进行分组”,如下所示:
(SELECT MIN(hour) FROM UNNEST(hits) as h GROUP BY h) as firstHitHour
然后我收到Grouping by expressions of type STRUCT is not allowed 错误。
如何更正这种替代语法以产生与第一个语法相同的结果?
【问题讨论】:
标签: sql google-analytics google-bigquery unnest