Sql 如何使用Google BigQuery连接多个大表

Sql 如何使用Google BigQuery连接多个大表,sql,join,google-bigquery,multiple-tables,Sql,Join,Google Bigquery,Multiple Tables,我正在尝试使用GoogleBigQuery将多个大表左键连接到一个大表中,以便在Tableau中更轻松地处理它 我在查询中按大小(131MB到20.2MB和一个3.96KB)排序了文件,并将我的左连接从“左连接”更改为“左连接各” SELECT * FROM [Table 1 location] A LEFT JOIN EACH [Table 2 Location] B ON A.SUBNUM = B.SUBNUM AND A.VISITSEQ = B.VISITSEQ LEFT JOIN

我正在尝试使用GoogleBigQuery将多个大表左键连接到一个大表中,以便在Tableau中更轻松地处理它

我在查询中按大小(131MB到20.2MB和一个3.96KB)排序了文件,并将我的左连接从“左连接”更改为“左连接各”

SELECT * FROM 
[Table 1 location] A
LEFT JOIN EACH [Table 2 Location] B
ON A.SUBNUM = B.SUBNUM 
AND A.VISITSEQ = B.VISITSEQ
LEFT JOIN EACH [Table 3 Location] C 
ON A.SUBNUM = C.SUBNUM 
AND A.VISITSEQ = C.VISITSEQ
LEFT JOIN EACH [Table 4 Location] D
ON A.SUBNUM = D.SUBNUM 
AND A.VISITSEQ = D.VISITSEQ
LEFT JOIN EACH [Table 5 Location] E 
ON A.SUBNUM = E.SUBNUM 
AND A.VISITSEQ = E.VISITSEQ
LEFT JOIN EACH [Table 6 Location] F
ON A.SUBNUM = F.SUBNUM
LEFT JOIN EACH[Table 7 Location] G 
ON A.SUBNUM = G.SUBNUM 
AND A.VISITSEQ = G.VISITSEQ
LEFT JOIN EACH[Table 8 Location] H 
ON A.SUBNUM = H.SUBNUM 
AND A.VISITSEQ = H.VISITSEQ
LEFT JOIN EACH [Table 9 Location] I 
ON A.SUBNUM = I.SUBNUM 
AND A.VISITSEQ = I.VISITSEQ
LEFT JOIN EACH[Table 10 Location] J
ON A.SUBNUM = J.SUBNUM 
AND A.VISITSEQ = J.VISITSEQ
LEFT JOIN EACH[Table 11 Location] K 
ON A.SITENUM = K.SITENUM
我希望这会将所有的表连接到一个大型表中,但是我收到了错误 查询执行期间超出了资源。有关详细信息,请参阅(错误代码:ResourcesCeeded)

评论太长了

首先,为标准SQL编写查询。这是您应该使用的SQL版本

其次,我怀疑您的
加入条件不正确。因此,您需要调试查询

通过运行以下命令,一次一步构建查询:

SELECT COUNT(*)
FROM [Table 1 location] A LEFT JOIN
     [Table 2 Location] B
     ON A.SUBNUM = B.SUBNUM 

检查计数是否合理。如果是,请添加下一个
加入
。如果没有,请找出正确的
JOIN
键的原因。

谷歌云支持

您收到的错误表明您的查询使用了太多资源,无法正确处理。我建议您将其拆分为多个更简单的子查询。例如,尝试连接4、4和3,而不是一次连接11个大表。此外,不再建议在BigQuery中使用
每个
,因为它是的一部分,并且BigQuery使用。尝试从查询中删除它


我希望这会有所帮助。

因为这是我第一次使用Google BQ,所以我不知道传统SQL和标准SQL之间的区别。在Gordon Linoff和Alejandro的进一步研究和指导下,我能够得到我的查询以产生我需要的结果

我选择了504列,并用SELECT ________;AS ____;给它们加上别名,将每个表连接到更多的列上,然后用WHERE子句完成,WHERE子句将我的数据限制在从数据库中提取数据的特定日期


谢谢大家的帮助和支持

谢谢戈登,你说的如果计数合理是什么意思?@Hatim。你应该知道每个连接条件应该匹配多少行;重写我对标准SQL的查询并查看计数。我注意到每个连接都是以指数方式将行相乘。(每个表只有约700K行,我的数据量达到了数十亿)。我对左连接和空值很满意,但看起来我缺少了一个关键概念。我还意识到,我从中提取数据的数据库每天都会创建一个新记录,因此我将数据限制在特定的一天。虽然我确实需要此主表的所有列,但根据我的研究,似乎我需要指定每个列名和别名,以避免出现错误“结果中不支持重复的列名”。解决后将更新。您没有清楚地说出作为输入函数的输出是什么。你确定你不想要工会吗?使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。描述一个结果:说得够多,有人可以离开,然后带着解决方案回来。当给出(基本或查询结果)关系(ship)/关联或表时,请说明行在表中时根据其列值表示的业务情况。