2017-05-24 18 views
0

我有约400个分区的日期分区表。 不幸的是其中一列数据类型已经改变,应该从INT更改为STR。更改日期分区表的数据类型

如下我可以改变数据类型:

SELECT 
    CAST(change_var AS STRING) change_var 
    <rest of columns> 
FROM dataset.table_name 

,并覆盖表,但随后的日期分区将丢失。

有什么办法保持分区和更改列数据类型?

回答

0

选项1. 按分区导出表。我创建了一个简单的库来实现它。 https://github.com/rdtr/bq-partition-porter 然后用正确的类型创建一个新表,并通过分区再次将数据加载到新表中。小心配额(每天1000个出口)。 400应该没问题。

选项2. 通过使用Cloud Dataflow,您可以导出整个表格,然后使用DynamicDestination按分区将数据导入BQ。如果多个分区太多,这就足以满足要求。

我希望bq load命令有一些方法来指定分区键字段名称(因为它已在bq load help中描述过)。在此之前,您需要遵循以下任一选项。