BigQuery错误:如果子查询中的作用域聚合,则别名字段的SELECT失败



此查询失败:

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

最新更新