Google bigquery 使现有的bigquery表集群化

Google bigquery 使现有的bigquery表集群化,google-bigquery,clustered-index,Google Bigquery,Clustered Index,我在bigquery中有一个相当大的已分区表。我想使表集群化,至少对于新分区是这样 从文档:,我们可以在加载数据时创建一个集群表,我尝试使用集群字段加载一个新分区:job\u config.clustering\u fields=[“event\u type”] 加载成功完成,但是新分区似乎没有集群化(我不确定如何检查它是否集群化,但当我查询到该特定分区时,它将始终扫描所有行) 有没有一种好方法可以为现有分区表创建集群字段 如有任何意见、建议或回答,我们将不胜感激 非常感谢, Yosua创建表时

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

从文档:,我们可以在加载数据时
创建一个集群表
,我尝试使用集群字段加载一个新分区:
job\u config.clustering\u fields=[“event\u type”]

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

有没有一种好方法可以为现有分区表创建集群字段

如有任何意见、建议或回答,我们将不胜感激

非常感谢,
Yosua

创建表时,只能指定群集列
所以,显然,您不能期望现有的非集群表,尤其是新分区成为集群


“解决方法”是创建新的表以进行适当的分区/集群,并将数据从Google云存储(GCS)加载到其中。您可以先将原始表中的数据导出到GCS中,这样整个过程将是免费的

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


“解决方法”是创建新的表以进行适当的分区/集群,并将数据从Google云存储(GCS)加载到其中。您可以先将原始表中的数据导出到GCS中,这样整个过程将是免费的

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

您可以通过以下方式更改群集规范:

调用
表。更新
表。修补
API方法

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

参考


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

您可以通过以下方式更改群集规范:

调用
表。更新
表。修补
API方法

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

参考


谢谢!是的,我想我现在可以使用解决方法:)嗨,我有两个表,一个是非集群表,另一个是具有相同字段的集群表。如果两个表都存在,如何将数据从非群集表复制到群集表?我认为这个答案并不完全正确。根据官方文档:
通过调用tables.update或tables.patch方法,可以更改或删除表集群规范。集群表中的集群列集也可以更改为不同的列集。当一个表从非聚集表转换为聚集表或聚集列集被更改时,自动重新聚集只会从那时起生效。
我的理解是,您以后也可以指定聚集列。只是之前添加的数据不会被收集。答案是在2018年8月给出的,当时情况有所不同:o)到目前为止,这是否有效?我试图用集群信息更新现有表,但API的响应是“无法添加、更新或删除没有分区字段的集群。”
错误(这对我来说没有意义)。谢谢!是的,我想我现在可以使用解决方法:)嗨,我有两个表,一个是非集群表,另一个是具有相同字段的集群表。如果两个表都存在,如何将数据从非群集表复制到群集表?我认为这个答案并不完全正确。根据官方文档:
通过调用tables.update或tables.patch方法,可以更改或删除表集群规范。集群表中的集群列集也可以更改为不同的列集。当一个表从非聚集表转换为聚集表或聚集列集被更改时,自动重新聚集只会从那时起生效。
我的理解是,您以后也可以指定聚集列。只是之前添加的数据不会被收集。答案是在2018年8月给出的,当时情况有所不同:o)到目前为止,这是否有效?我试图用集群信息更新现有表,但API的响应是
“无法添加、更新或删除没有分区字段的集群。”
错误(这对我来说毫无意义)。