当你在数据流中使用`fromTable` vs`fromQuery("SELECT*...")`时,`BigQueryIO`有区别吗?

Tom*_*son 1 dataflow google-bigquery google-cloud-dataflow

当您需要从数据流作业中的bigquery中的一个或多个表中读取所有数据时,我会说有两种方法.第一种方法是使用BigQueryIOwith from,它读取有问题的表,第二种方法是使用fromQuery指定读取同一个表中所有数据的查询的位置.所以我的问题是:

  • 使用其中一个是否有任何成本或性能优势?

我没有在文档中找到任何关于此的内容,但我真的很想知道.我想可能read更快,因为您不需要运行扫描数据的查询,这意味着它更类似于您在BigQueryUI中的预览功能.如果这是真的,它也可能便宜得多,但如果它们的成本相同则有意义.

简而言之,有什么区别:

BigQueryIO.read(...).from(tableName)
Run Code Online (Sandbox Code Playgroud)

BigQueryIO.read(...).fromQuery("SELECT * FROM " + tableName)
Run Code Online (Sandbox Code Playgroud)

Jia*_* Ma 5

from既比它便宜又快fromQuery(SELECT * FROM ...).

  • from直接导出表,导出数据对BigQuery 是免费的.
  • fromQuery(SELECT * FROM ...) 将首先扫描整个表($ 5/TB)并导出结果.