BigQuery 错误:如果子查询中的范围聚合,则别名字段的 SELECT 会失败
BigQuery Bug: SELECT of aliased field fails if scoped aggregation in subquery
此查询失败:
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 子句中的别名字段似乎不起作用。
我找到了一个相关的 bug,它被标记为固定的,但我认为子查询中范围聚合的存在可能是未涵盖的边缘情况。
此查询有效:
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
此查询失败:
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 子句中的别名字段似乎不起作用。
我找到了一个相关的 bug,它被标记为固定的,但我认为子查询中范围聚合的存在可能是未涵盖的边缘情况。
此查询有效:
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