BigQuery中的WITH和UNNEST

3

我发现在查询中使用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`
错误: 未识别的名称: payload at [9:14]。可能是因为该WITH块尚未定义表格?是否有其他方式可以解决这个问题?
编辑:这是一个玩具查询,用于说明问题,不代表我们正在运行的实际查询。
1个回答

4

我能看到的唯一选择就是简化/优化你的查询,使其变为以下形式 - 这样就不需要在数组内使用WITH了。

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

感谢您的尝试。这是一个玩具查询,仅用于显示目的;实际查询更加复杂。 - Maximilian
我的回答重点是 - 你不能在ARRAY或任何其他表达式中使用WITH。我只是试图向你展示方向,以防你没有意识到你的查询有点过度设计了。 - Mikhail Berlyant
我很感激你的努力! - Maximilian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接