在数据流中使用“fromTable”与“fromQuery("SELECT * ...")”时,“BigQueryIO”有区别吗?
Is there a difference in `BigQueryIO` when you use `fromTable` vs `fromQuery("SELECT * ...")` in dataflow?
当您需要在数据流作业的 bigquery 中读取一个或多个 table 中的所有数据时,我会说有两种方法。第一种是将 BigQueryIO
与 from
一起使用,它读取有问题的 table,第二种方法是使用 fromQuery
,您指定一个查询来读取所有来自同一 table 的数据。所以我的问题是:
- 使用一个比另一个有任何成本或性能优势吗?
我没有在文档中找到任何关于此的内容,但我真的很想知道。我想 read
可能更快,因为您不需要 运行 扫描数据的查询,这意味着它更类似于 BigQuery
[=32] 中的预览功能=].如果那是真的,它可能也会便宜得多,但如果它们的价格相同,那就有意义了。
简而言之,有什么区别:
BigQueryIO.read(...).from(tableName)
和
BigQueryIO.read(...).fromQuery("SELECT * FROM " + tableName)
from
比 fromQuery(SELECT * FROM ...)
.
更便宜也更快
from
直接导出 table 并且导出数据是 free for BigQuery.
fromQuery(SELECT * FROM ...)
将首先扫描整个 table ($5/TB) 并导出结果。
当您需要在数据流作业的 bigquery 中读取一个或多个 table 中的所有数据时,我会说有两种方法。第一种是将 BigQueryIO
与 from
一起使用,它读取有问题的 table,第二种方法是使用 fromQuery
,您指定一个查询来读取所有来自同一 table 的数据。所以我的问题是:
- 使用一个比另一个有任何成本或性能优势吗?
我没有在文档中找到任何关于此的内容,但我真的很想知道。我想 read
可能更快,因为您不需要 运行 扫描数据的查询,这意味着它更类似于 BigQuery
[=32] 中的预览功能=].如果那是真的,它可能也会便宜得多,但如果它们的价格相同,那就有意义了。
简而言之,有什么区别:
BigQueryIO.read(...).from(tableName)
和
BigQueryIO.read(...).fromQuery("SELECT * FROM " + tableName)
from
比 fromQuery(SELECT * FROM ...)
.
from
直接导出 table 并且导出数据是 free for BigQuery.fromQuery(SELECT * FROM ...)
将首先扫描整个 table ($5/TB) 并导出结果。