我发现使用WITH
块来分解查询中的逻辑很有帮助。我是否认为我不能在ARRAY
表达式中的嵌套字段上执行此操作?我可以分成嵌套查询 - 这已经足够但不理想。
例如,这有效:
SELECT
repository.url,
ARRAY(
SELECT
action
FROM (
SELECT
action
FROM
UNNEST(payload.pages))) action
FROM
`bigquery-public-data.samples.github_nested`
......但这不是:
SELECT
repository.url,
ARRAY(
WITH
p AS (
SELECT
action
FROM
UNNEST(payload.pages))
SELECT
action
FROM
p) action
FROM
`bigquery-public-data.samples.github_nested`
... Error: Unrecognized name: payload at [9:14]
。可能是因为尚未为该WITH
块定义该表?
还有其他办法吗?
编辑:这是玩具查询来说明问题,而不代表我们正在运行的实际查询
答案 0 :(得分:3)
我看到的唯一选择就是简化/优化您的查询到下面 - 所以在ARRAY中不需要WITH
#standardSQL
SELECT
repository.url,
ARRAY(SELECT action FROM UNNEST(payload.pages)) action
FROM `bigquery-public-data.samples.github_nested`