Google cloud platform 将数据从存储器加载到bigquery时分析数据类型时出错
我有一个大型bigquery表,其模式如下:Google cloud platform 将数据从存储器加载到bigquery时分析数据类型时出错,google-cloud-platform,google-bigquery,Google Cloud Platform,Google Bigquery,我有一个大型bigquery表,其模式如下: id:integer,age:integer,name:string,id2:integer,grade1:float,....,grade100:float 该表是从google存储中加载的,现在我尝试附加另一个文件,该文件具有相同的列数和“相同类型”的列。问题是这两个文件都是使用同一个脚本生成的,但第二个文件中应该是整数的列似乎是浮点。因此,我尝试附加的第二个csv文件的模式是: **id:float**,**age:float**,name:
id:integer,age:integer,name:string,id2:integer,grade1:float,....,grade100:float
该表是从google存储中加载的,现在我尝试附加另一个文件,该文件具有相同的列数和“相同类型”的列。问题是这两个文件都是使用同一个脚本生成的,但第二个文件中应该是整数的列似乎是浮点。因此,我尝试附加的第二个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中的第二个文件,这就是我要做的。我将遵循以下步骤:
这是正确的方法吗?你有。字面上看
CAST()
例如,选择id、年龄、姓名、演员(id2为FLOAT64).
铸造转换的详细信息可在中找到,但如何转换?我的意思是,我知道我可以使用
CAST()
,但我试图附加的文件在云存储中。是否可以从BigQuery对Google存储中的文件执行SELECT
查询?对于负载情况,您可以指定最符合的显式模式(例如,使用float64而不是integer64)。或者,如果要向表中追加数据,则加载将使用目标表的架构。或者,加载到临时表,然后创建表。。。如SELECT…
所示,但由于每次加载都必须运行额外的查询,因此效率较低(且可能成本较高)。