使现有的bigquery表成为集群

时间:2018-08-29 12:29:58

标签: google-bigquery clustered-index

我在bigquery中有一个相当大的现有分区表。我想使表集群化,至少对于新分区。

从文档https://cloud.google.com/bigquery/docs/creating-clustered-tables开始,据说我们能够Creating a clustered table when you load data,并且我尝试使用群集字段job_config.clustering_fields = ["event_type"]加载新分区。

加载成功完成,但是新分区似乎没有集群(我不确定如何检查它是否集群了,但是当我查询该特定分区时,它将始终扫描所有行)。

是否有一个很好的方法来为现有分区表创建聚类字段?

任何评论,建议或答案都很好。

非常感谢, 优苏阿

2 个答案:

答案 0 :(得分:2)

您只能在创建表时指定聚簇列
因此,显然,您不能期望现有的非聚集表,尤其是新分区成为聚集

“解决方法”是创建要正确分区/集群的新表,并从GCS将数据加载到该表中。为此,您可以先将原始表中的数据导出到GSC中,这样整个过程都是免费的

答案 1 :(得分:1)

BigQuery 支持将现有的非聚簇表更改为聚簇表,反之亦然。您还可以更新聚簇表的聚簇列集。

您可以通过以下方式更改聚类规范:

调用 tables.updatetables.patch API 方法。

使用 bq update 标志调用 bq 命令行工具的 --clustering_fields 命令。

参考

https://cloud.google.com/bigquery/docs/creating-clustered-tables#modifying-cluster-spec