在大查询中加入大表

Inner Joining big tables in Big Query

我正在尝试在两个大 table 之间执行内部联接,其中每个 table 包含近 3000 万条记录。当我尝试 运行 在这两个 table 之间进行简单的 INNER JOIN 时,出现如下错误,要求我使用 JOIN EACH 语法,但我没有找到任何关于 google 引用的适当文档加入每个。有人可以分享对此的想法吗?这是我的错误如下。

Error: Table too large for JOIN. Consider using JOIN EACH. For more details, please see https://developers.google.com/bigquery/docs/query-reference#joins

看着你的问题,你似乎只需要阅读一下 doc available

现在,在阅读了 Jordan Tigani 的书后,我可以告诉您,当您加入时,系统实际上会在处理您的查询的每个分片中发送较小的 table。由于您的 table 的 none 小于 8 Mb,因此它不能简单地发送您的 table(因为它太大了)。

"JOIN EACH" 的工作方式是它告诉系统 "hash the joining criteria on both tables, and send a subset of each table to a specific shard"。散列意味着无论您用作内部连接的标准,实际上都将在同一个分片中结束。它对性能有影响,但它是唯一可以使两个 table 都大于 8 mb 的 JOIN 通过的东西。