我有一个用例,其中我必须通过对20个不同的BQ表应用左联接来从BigQuery中读取选定的数据,对这些数据应用转换,然后最终转储到最终的BQ表中。
我有两种实现此目标的方法,我尝试了这些示例数据(来自20个表的总计10-12百万行),结果如下:
方法1-为整个过程编写一个与BQ兼容的查询,并通过Apache Beam(使用BigQueryIO.readTableRows())触发该查询,最后将数据转储到目标BigQuery表中。
方法2-在Apache Beam中编写整个过程,并避免在BQ中耗尽大量插槽。
这里要考虑的重要事情是,随着时间的流逝,要连接的20个源表将继续增长,并且在不久的将来可能会有TB的数据。
考虑到我们将来将会增加的数据量,哪种方法更有效?
答案 0 :(得分:2)
有两个步骤。您是否尝试过为第一个视图创建视图(处理20个表),然后为一个简单查询(甚至从UI)创建视图以执行第二步并将其保存到最终表中?