Google bigquery GBQ中的奇怪连接结果

Google bigquery GBQ中的奇怪连接结果,google-bigquery,Google Bigquery,我遇到了GBQ中的查询结果,我既不理解也无法解释 我正在尝试连接两个具有完全相同的模式结构并且可能有重复项的表 我的愿望是连接两个表,根据唯一id获取表1中的所有行以及表2中不在表1中的任何其他行。这是一种非常常见的连接场景 因此,为了测试join,我缩小了where子句的范围,使其指向一行。我验证了每个表中都存在行,并且每个表中的列数据都相同 下面是一个示例查询,我用来测试它是否返回一行 从dataset1.hometwork t1中选择t1.*其中t1.book_id=12345和t1.ho

我遇到了GBQ中的查询结果,我既不理解也无法解释

我正在尝试连接两个具有完全相同的模式结构并且可能有重复项的表

我的愿望是连接两个表,根据唯一id获取表1中的所有行以及表2中不在表1中的任何其他行。这是一种非常常见的连接场景

因此,为了测试join,我缩小了where子句的范围,使其指向一行。我验证了每个表中都存在行,并且每个表中的列数据都相同

下面是一个示例查询,我用来测试它是否返回一行

从dataset1.hometwork t1中选择t1.*其中t1.book_id=12345和t1.hometwork_id=10337096,t1.hometworkresult_id=12353139和t1.question_id=2

从dataset2.hometwork t1中选择t1.*其中t1.book_id=12345和t1.hometwork_id=10337096,t1.hometworkresult_id=12353139和t1.question_id=2

我验证了每一行是否像我预期的那样返回一行。现在,如果我连接两个表(在我的情况下,表1将有最多的行)

这是我的join语句,它返回30行,全部重复。我不知道额外的行来自哪里,也不知道bigquery在做什么。之所以需要EACH子句,是因为我的表大小超过了最小8Mb压缩限制

挑选 t1* 从dataset1.1开始,将作业设置为t1 左键将每个数据集2.1连接为t2 在t1.homeworksult\u id=t2.homeworksult\u id上 其中,t1.book_id=12345,t1.hometwork_id=10337096,t1.hometworkresult_id=12353139,t1.question_id=2

如果有人能告诉我这里到底发生了什么,我将不胜感激


谢谢,J.D.

所以我放弃了加入,从不同的角度解决了这个问题。我使用了Google BigQuery的一个文档较少的功能,它允许您基本上合并来自多个查询的结果。如果要查询的表中的模式结构相同,那么这种方法很有效

基本语法是

从(查询1)、(查询2)、(查询N)中选择*

在我的例子中,查询1选择了第一个表中行数最多的所有行,查询2选择了第二个表中不在第一个表中的所有行


J.D.

这里有重复的字段吗?请注意,界面会自动将数据展平。如果Pentium10的回答没有帮助,我很乐意进一步调查。您可以将作业ID发送到jcondit@google.com.Thanks请回答。没有重复的字段。我通过使用GBQ语法SELECT*from(query1),(query2),…,(queryN)等“UNION”解决了这个问题