WITH& BigQuery中的UNNEST

时间:2017-10-05 22:36:18

标签: google-bigquery

我发现使用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块定义该表?

还有其他办法吗?

编辑:这是玩具查询来说明问题,而不代表我们正在运行的实际查询

1 个答案:

答案 0 :(得分:3)

我看到的唯一选择就是简化/优化您的查询到下面 - 所以在ARRAY中不需要WITH

    
#standardSQL
SELECT
  repository.url,
  ARRAY(SELECT action FROM UNNEST(payload.pages)) action
FROM `bigquery-public-data.samples.github_nested`