【问题标题】:how to create partition and cluster on an existing table in big query?如何在大查询中在现有表上创建分区和集群?
【发布时间】:2021-09-28 02:34:56
【问题描述】:

在 SQL Server 中,我们可以这样创建索引。表已经存在后如何创建索引? bigquery中创建聚集索引的语法是什么?

CREATE INDEX abcd ON `abcd.xxx.xxx`(columnname )

在大查询中,我们可以创建如下表。但是如何在现有表上创建分区和集群?

CREATE TABLE rep_sales.orders_tmp PARTITION BY DATE(created_at) CLUSTER BY created_at AS SELECT * FROM rep_sales.orders

【问题讨论】:

  • BigQuery 没有索引 - 检查this out
  • 这能回答你的问题吗? Indexes on BigQuery Table
  • CREATE TABLE rep_sales.orders_tmp PARTITION BY DATE(created_at) CLUSTER BY created_at AS SELECT * FROM rep_sales.orders
  • 貌似有分区和集群。但是如何在现有表上创建分区和集群?

标签: google-cloud-platform google-bigquery


【解决方案1】:

正如 @Sergey Geron 在 cmets 中提到的,BigQuery 不支持索引。更多信息请参考这个doc

现有表无法分区,但您可以创建一个新的分区表,然后将数据从未分区表加载到其中。

对于表的集群,BigQuery 支持将现有的非集群表更改为集群表,反之亦然。您还可以更新聚簇表的聚簇列集。这种更新聚簇列集的方法对于使用连续流式插入的表很有用,因为这些表不能轻易地被其他方法交换。

您可以通过以下方式change the clustering specification

  • 调用tables.updatetables.patch API 方法。

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

注意:当表从非聚簇转换为聚簇或聚簇列集更改时,自动重新聚簇仅从那时起有效。例如,使用 tables.update 转换为聚簇表的非聚簇 1 PB 表仍然具有 1 PB 的非聚簇数据。自动重新聚类仅适用于更新后提交到表的任何新数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2015-08-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多