在数据流中使用“fromTable”与“fromQuery("SELECT * ...")”时,“BigQueryIO”有区别吗?

Is there a difference in `BigQueryIO` when you use `fromTable` vs `fromQuery("SELECT * ...")` in dataflow?

当您需要在数据流作业的 bigquery 中读取一个或多个 table 中的所有数据时,我会说有两种方法。第一种是将 BigQueryIOfrom 一起使用,它读取有问题的 table,第二种方法是使用 fromQuery,您指定一个查询来读取所有来自同一 table 的数据。所以我的问题是:

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

简而言之,有什么区别:

BigQueryIO.read(...).from(tableName)

BigQueryIO.read(...).fromQuery("SELECT * FROM " + tableName)

fromfromQuery(SELECT * FROM ...).

更便宜也更快
  • from 直接导出 table 并且导出数据是 free for BigQuery.
  • fromQuery(SELECT * FROM ...) 将首先扫描整个 table ($5/TB) 并导出结果。