我想知道在对分区表执行左联接以创建组合视图时是否有一种方法可以进一步优化处理的数据量。
我有超过一千个每日表(每个约20MB,大约三年的数据。我想要做的就是让每个表与一个静态表(约15GB)连接,并且我有一个“组合”表存储所有左联接输出。
我每周更新一次日表,这意味着每周都要创建7个表,并在表的日期进行分区,然后用最新数据覆盖“合并的”表。当前查询过程约为36GB。
这里的效率低下是因为该联接在所有每日表上的执行都与我刚刚添加的最新7条相反,并且使用分区上的where字段将其过滤到最近7天并没有真正优化处理量。
这是我用来连接所有内容的查询,ISBN是连接键。
SELECT o.* EXCEPT (Date), Date(o.Date) as Date, Appended.* EXCEPT(ISBN)
FROM (SELECT * FROM `2019.all_traffic_*`) as o
LEFT OUTER JOIN `2019.all_isbn` as Appended ON o.ISBN = Appended.ISBN
我能想到的最佳优化方法是将最新的7个分区表的合并结果附加到exisitng“组合”表中。而且我不确定如何实现。
如果您对在BQ中使用分区表有任何建议,请提供帮助,谢谢!