如何通过查询和导出自身来更改BigQuery表的列类型?

sca*_*guy 9 google-bigquery

我的integerBigQuery表中有一个类型列,现在我需要将其转换为float列.我还必须保留所有记录.我想要做的是更改列类型.没有铸造.

我已经读过,只需将表上的查询结果导出到自身就可以实现.

怎么做?

Mik*_*ant 15

使用SELECT将结果写回表

SELECT 
  CAST(int_field AS FLOAT) AS float_field, 
  <all_other_fields> 
FROM YourTable
Run Code Online (Sandbox Code Playgroud)

这种方法将用于扫描整个表格

要执行此操作 - 您应该使用BQ Web UI中的" 显示选项"按钮并正确设置选项,如下例所示.运行之后 - 您的表将具有浮点数与原始整数数据类型的列,如您所愿.注意:您应该为int_field和float_field使用正确/相同的字段名称

在此输入图像描述

如果您只需要添加新列,我会指向表:patch GBQ API.
我不确定这个API是否允许更改列的类型 - 我怀疑 - 但它很容易检查

使用作业:插入 EXTRACT然后加载

在这里,您可以将表提取到GCS,然后使用调整后的模式将其加载回GBQ

上述方法将a)消除查询(扫描)表的成本成本,b)可以帮助您解决如果您有复杂的schame(具有记录/重复/嵌套等类型/模式)的限制