不支持引用其他表的相关子查询

时间:2018-01-08 15:14:14

标签: google-bigquery standard-sql

我有数百个查询为我公司的仪表板供电,这些仪表板已经使用多年,但几天前在一夜之间发生了错误:

  

错误:不支持引用其他表的相关子查询,除非它们可以解相关,例如将它们转换为有效的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`) 

1 个答案:

答案 0 :(得分:0)

问题是在historical_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语句解决了问题