Google bigquery 大查询中的内部连接大表

Google bigquery 大查询中的内部连接大表,google-bigquery,Google Bigquery,我试图在两个大表之间执行内部联接,其中每个表包含近3000万条记录。当我尝试在这两个表之间运行一个简单的内部联接时,我得到一个错误,如下所示,要求我使用JOIN-EACH语法,但我没有找到任何关于JOIN-EACH的google引用的正确文档。有人能分享一下这方面的想法吗?下面是我的错误 Error: Table too large for JOIN. Consider using JOIN EACH. For more details, please see https://developer

我试图在两个大表之间执行内部联接,其中每个表包含近3000万条记录。当我尝试在这两个表之间运行一个简单的内部联接时,我得到一个错误,如下所示,要求我使用JOIN-EACH语法,但我没有找到任何关于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

看看你的问题,似乎你所需要的只是读一读上面的内容

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


“JOIN EACH”的工作方式是,它告诉系统“散列两个表上的连接条件,并将每个表的子集发送到特定的切分”。散列意味着,无论您使用什么作为内部联接的标准,实际上都将在同一个碎片中结束。它对性能有影响,但这是唯一可以在两个表都大于8MB的情况下进行连接的方法。

您看到了吗?或者你需要的比这个多?看起来不错。我已经更改了我的代码,并且工作正常。添加了一个答案,并提供了更多的背景信息:)请随时要求澄清