我有数百个查询为我公司的仪表板供电,这些仪表板已经使用多年,但几天前在一夜之间发生了错误:
错误:不支持引用其他表的相关子查询,除非它们可以解相关,例如将它们转换为有效的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`)
答案 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语句解决了问题