是否可以在BigQuery SQL中将整个列的整数值上传/修改为字符串值?

Possible to upload / modify integer values for an entire column to string values in BigQuery SQL?

提问人:Kyle Kulinski 提问时间:7/6/2023 最后编辑:Kyle Kulinski 更新时间:7/6/2023 访问量:40

问:

我正在处理许多数据表,几个月后,其中一列的值中现在有字母而不仅仅是整数。这很不方便,因为前 8 个月被自动检测为整数,而其余数据在特定列中具有字符串值。当我尝试创建一个全面的数据表时,我无法联接两组数据,因为列不兼容。我想使用字符串或整数,但我宁愿不要省略字母值,因为它们是唯一标识符。

例如

包含整数的数据集:

console.cloud.google.com/bigquery?ws=!1m5!1m4!4m3!1sdivvy-bike-data-391804!2sDivvy_bike_data_2!3sA202004

column name : start_station_id
628
628
628
...

包含字符串的数据集:

console.cloud.google.com/bigquery?ws=!1m5!1m4!4m3!1sdivvy-bike-data-391804!2sDivvy_bike_data_2!3sA202203

start_station_id:
624
TA1306000029
TA1306000029
TA1308000043
...

最终数据表示例:

console.cloud.google.com/bigquery?ws=!1m5!1m4!4m3!1sdivvy-bike-data-391804!2sDivvy_bike_data_2!3sTotal_Data

尝试使用时收到的错误

INSERT INTO divvy-bike-data-391804.Divvy_bike_data_2.Total_Data 
SELECT * FROM Divvy_bike_data_2.A202012

“查询列 6 的类型为 STRING,无法插入到第 start_station_id 列中,该列的类型为 INT64 在 [2:5]”

理想情况下,我想对整个列执行此操作,并且有数十万行。理想情况下,可以对同一查询中的多个列执行此操作。您能想到一个简单的解决方法吗?我提前感谢任何帮助!

对不起,我是 SQL 的新手,所以一些看起来很容易的东西可能就在我眼前,我似乎找不到合适的方法。

最好

凯尔

我尝试过 concat 函数,尝试添加一个字母来形成一个字符串,cast 函数,我考虑过添加另一列,其中包含所有特定字母以尝试加入。

SQL 强制转换 整数 串联

评论

0赞 nbk 7/6/2023
最终结果会是什么?的表 SQL 没有数据集
0赞 Stu 7/6/2023
不清楚你在问什么 - 我想执行这个 - 指的是什么?请显示您的数据和所需的结果。
0赞 Kyle Kulinski 7/6/2023
我想要一个“最终”表,其中包含来自多个表的所有数据。当 start_station_id 列中只有字符串时,它效果很好,但尝试组合具有整数的表不起作用。我想将前 8 个月数据中的所有整数转换为字符串。基本上,制作一个巨大的数据表,与 R 一起使用,以便从许多较小的数据表进行可视化,而不会丢失字符串文件中的字母。我将更新问题以更清楚地反映这一点并包含数据。

答:

0赞 Lara19 7/6/2023 #1

您需要将start_station_id转换为字符串:

INSERT INTO divvy-bike-data-391804.Divvy_bike_data_2.Total_Data 
SELECT A, B, C, Cast(start_station_id as STRING) as start_station_id FROM Divvy_bike_data_2.A202012

并确保Total_Data中的start_station_id也是字符串类型