我的BigQuery表中有一个integer
类型列,现在我需要将其转换为float
列。我还必须保留所有记录。我想要做的是 更改列类型 。不投。
我已经读过,只要将表格上的查询结果导出到自身,就可以做到这一点。
怎么做?
答案 0 :(得分:15)
使用SELECT将结果写回表
SELECT
CAST(int_field AS FLOAT) AS float_field,
<all_other_fields>
FROM YourTable
这种方法可以扫描整个表格
要执行此操作,您应使用 BQ Web UI 中的显示选项按钮并正确设置选项,如下例所示。运行之后 - 您的表将具有浮点数与原始整数数据类型的列,如您所愿。注意:您应该为int_field和float_field
使用正确/相同的字段名称如果您只是需要添加新列,我会指向Tables: patch GBQ API 我不确定这个API是否允许更改列的类型 - 我怀疑 - 但很容易检查
使用Jobs: insert EXTRACT然后加载
在这里,您可以将表提取到GCS,然后将其加载回具有调整后架构的GBQ
以上方法将a)消除查询(扫描)表的成本成本,b)可以帮助您在出现复杂的schame(记录/重复/嵌套等类型/模式)时出现的限制