2

我有数百个查询为我公司的仪表板提供动力,这些查询已经工作了多年,但几天前一夜之间就崩溃了,给出了错误:

错误:不支持引用其他表的相关子查询,除非它们可以去相关,例如通过将它们转换为有效的 JOIN。

下面是有问题的查询类型的示例。显然 WHERE 条件是问题所在。真的不再支持这种类型的查询吗?现在是否需要将所有使用此语法的查询转换为使用 INNER JOIN?这是一个巨大的变化,真正影响了我们的分析。

-- standardSQL
SELECT 
  accounts,
  monthly_timestamp
FROM 
  `custom_query_ingestion.accounts_monthly`
WHERE 
  monthly_timestamp <= (SELECT MAX(TIMESTAMP(date)) FROM `historical_data.historical_revenue`) 
4

1 回答 1

0

问题是在history_revenue 内的UNNESTed 数组常量上的LEFT JOIN:

LEFT JOIN (
  SELECT 
    product
  FROM 
    UNNEST(['Item1','Item2','Item3']) AS product
) AS nonrecurring
ON nonrecurring.product = revenue.product_item

重写为 CASE WHEN 语句解决了问题

于 2018-01-09T15:54:32.023 回答