首页 > 解决方案 > 将数据从存储加载到 bigquery 时解析数据类型时出错

问题描述

我有一个大型 bigquery 表,其架构如下:

id:integer,age:integer,name:string,id2:integer,grade1:float,....,grade100:float

该表是从谷歌存储加载的,现在我正在尝试附加另一个具有相同列数和“相同类型”列的文件。问题是这两个文件都是使用相同的脚本生成的,但似乎(由于我仍然不知道的原因)第二个文件中应该是整数的列是浮点数。因此,我要附加的第二个 csv 文件的架构是:

**id:float**,**age:float**,name:string,**id2:float**,grade1:float,....,grade100:float

这两个文件的示例是: BQ 表中的文件:

id age name id2  grade1 ..... grade100
1  22  John  3    6.2   .....  6.1

我试图附加的文件中的数据如下:

id    age   name  id2  grade1 ..... grade100
3.0   22.0  Peter 5.0    6.5   .....  6.3

如何“强制”或强制转换存储中文件的第二种数据类型以匹配我已经在 BQ 中的表的数据类型,这样我就不会在年龄、id 等方面存在这些冲突?

注意:这不是实际的架构。没有年龄或成绩,但它是一种更简单的方式来代表我遇到的问题。

编辑:我在 BigQuery 中没有第二个文件,这就是我想要做的。我正在遵循的步骤是:

  1. 点击数据集
  2. 点击“创建表”
  3. 选择我感兴趣的存储桶/文件夹/文件
  4. 转到高级选项并选择“附加到表格”选项。

这是正确的方法吗?

标签: google-cloud-platformgoogle-bigquery

解决方案


你拥有了它。从字面上看CAST()

例如,SELECT id, age, name, CAST(id2 as FLOAT64) ...

投射转换的细节可以在https://cloud.google.com/bigquery/docs/reference/standard-sql/conversion_rules中找到


推荐阅读