如何在Google BigQuery中修改原表将处理后评分转为FLOAT类型?
解决方案:在BigQuery中修改原表并转换评分数据类型
你可以通过以下两种方式修改原表,将处理后的评分转换为FLOAT64类型:
方案1:直接覆盖原表(一次性处理)
这种方法最直接,通过CREATE OR REPLACE TABLE将处理后的数据覆盖原表,同时完成类型转换:
CREATE OR REPLACE TABLE Movies.Movies_Showtime AS SELECT Movie_Name, -- 先去除空格再转换为FLOAT64类型,用SAFE_CAST避免无效数据导致查询失败 SAFE_CAST(REPLACE(Movie_Rating, ' ', '') AS FLOAT64) AS Movie_Rating FROM Movies.Movies_Showtime;
执行后,原表的Movie_Rating列会直接变为FLOAT64类型,数据也会更新为无空格的正确数值。如果确认数据里没有无效的评分格式,也可以去掉SAFE_直接用CAST。
方案2:分步修改列(适合需要验证数据的场景)
如果不想直接覆盖原表,可以分步骤添加新列、更新数据、替换旧列:
- 添加新的浮点类型列
ALTER TABLE Movies.Movies_Showtime ADD COLUMN Movie_Rating_Float FLOAT64;
- 将处理后的评分写入新列
UPDATE Movies.Movies_Showtime SET Movie_Rating_Float = SAFE_CAST(REPLACE(Movie_Rating, ' ', '') AS FLOAT64);
- 删除旧的字符串类型列
ALTER TABLE Movies.Movies_Showtime DROP COLUMN Movie_Rating;
- 将新列重命名为原列名
ALTER TABLE Movies.Movies_Showtime RENAME COLUMN Movie_Rating_Float TO Movie_Rating;
这种方式可以在删除旧列前,验证新列的数据是否正确,适合对数据安全性要求较高的场景。
内容的提问来源于stack exchange,提问作者beth_9
相关产品推荐
相关产品推荐

