此查询失败:
SELECT
g.repository.url,
cnt,
FROM
(SELECT
repository.url,
COUNT(payload.pages.action) WITHIN RECORD as cnt,
FROM publicdata:samples.github_nested) g
LIMIT 10
错误:
Field 'g.repository.url' not found; did you mean 'repository.url'?
当SELECT包含根据子查询中的作用域聚合计算的字段并且您没有任何JOIN时,SELECT子句中的别名字段似乎不起作用。
我发现了一个相关的错误,它被标记为已修复,但我认为子查询中存在作用域聚合可能是一个未涵盖的边缘情况。
此查询确实有效:
SELECT
g.repository.url,
cnt,
FROM
(SELECT
repository.url,
99 as cnt,
FROM publicdata:samples.github_nested) g
LIMIT 10
第一个查询应该工作吗?(很明显,我可以通过从SELECT子句中删除别名来解决这个问题,但SQL实际上是由我们使用的查询工具生成的,所以我们不容易修复)。
是的,这是一个错误,第一个查询应该可以工作。
如果您将第一个查询替换为:
SELECT
g.url,
g.cnt
FROM
(SELECT
repository.url,
COUNT(payload.pages.action) WITHIN RECORD as cnt,
FROM publicdata:samples.github_nested) g
LIMIT 10