如何在BigQuery中将带逗号的string类型streams列转为integer?
解决BigQuery中带逗号的字符串转数值类型问题
首先,你遇到的报错根源是字符串里的千位分隔符逗号导致转换失败,必须先清理掉逗号再进行类型转换。
临时查询场景:用CAST转换
如果只是临时做数据分析,不需要永久修改表结构,直接在查询里先替换逗号再转换即可。你的播放次数最高15亿,完全在BigQuery的INT64类型范围内(最大支持9e18),用INT64比NUMERIC更适合做MAX()、MIN()这类数学运算:
SELECT CAST(REPLACE(streams, ',', '') AS INT64) AS streams FROM `your-table-name`
如果担心存在非数字字符导致转换失败,可以用SAFE_CAST,转换失败时会返回NULL,避免整个查询报错:
SELECT SAFE_CAST(REPLACE(streams, ',', '') AS INT64) AS streams FROM `your-table-name`
长期使用场景:修改列的数据类型
如果后续频繁需要用这个列做运算,建议直接修改表的列类型,避免每次查询都重复处理逗号。操作步骤如下:
- 新增一个INT64类型的临时列
ALTER TABLE `your-table-name` ADD COLUMN streams_temp INT64;
- 将清理后的数据写入临时列
UPDATE `your-table-name` SET streams_temp = CAST(REPLACE(streams, ',', '') AS INT64);
- 删除原来的字符串类型列
ALTER TABLE `your-table-name` DROP COLUMN streams;
- 将临时列重命名为原列名
ALTER TABLE `your-table-name` RENAME COLUMN streams_temp TO streams;
注意:如果表数据量很大,UPDATE操作会产生一定的BigQuery计算成本,建议在低峰期执行。
内容的提问来源于stack exchange,提问作者JMas19
相关产品推荐
相关产品推荐

