相当于子查询的"JOIN EACH"



我正在尝试运行具有大型子查询的查询,并收到以下错误:表对于 JOIN 来说太大了。请考虑使用"加入每个"。有关更多详细信息,请参阅 https://developers.google.com/bigquery/docs/query-reference#joins。

那么,对于子查询,是否有等效的 JOIN EACH,我可以在其中连接大于 8mb 的表? 我在文档中或搜索时没有看到任何内容。 这是我正在使用的查询 - 如果有一种方法可以重写它以更好地适应bigquery模型,那么我也对此持开放态度。

SELECT *
FROM [x.y]
WHERE column_hash NOT IN (
SELECT column_hash from [x.z]
)

您正在执行的查询是执行反联接,而不是子查询。 您可以将其重写为显式连接,但它有点冗长:

SELECT y.* -- Note you may have to expand out these fields yourself
FROM [x.z] as z
LEFT OUTER JOIN EACH [x.y] as y ON y.column_hash = z.column_hash
WHERE y.column_hash is NULL

最新更新