R到BigQuery数据上载错误

R到BigQuery数据上载错误,r,google-bigquery,R,Google Bigquery,我使用R包“bigrquery”将数据从R数据帧上传到现有的BigQuery表中,如下所示: mybq = bq_table(project='...', dataset='...', table=...) bq_table_upload(x=mybq, values=..., create_disposition='CREATE_NEVER', write_disposition='WRITE_APPEND') 但我发现以下错误消息: 错误:架构更新无效。字

我使用R包“bigrquery”将数据从R数据帧上传到现有的BigQuery表中,如下所示:

mybq = bq_table(project='...', dataset='...', table=...)
bq_table_upload(x=mybq, values=..., create_disposition='CREATE_NEVER', 
                write_disposition='WRITE_APPEND')
但我发现以下错误消息:

错误:架构更新无效。字段NewID的类型已从字符串更改为整数


BigQuery似乎在自动检测数据格式,并错误地认为NewID列(其值如“00487”)是数字,而实际上它是一个字符串。当我在NewID值中添加一个“x”字符时,错误就消失了,上传功能也完美了。使用“bigrquery”软件包上载数据时,有没有办法禁用自动检测功能?

同一库中的
bq\u perform\u load
功能应该是一个解决方案。在这个函数中,您可以使用参数
fields
指定模式,这样Bigquery就不会自动检测模式了

我测试了一下,它在我这边起作用了。我创建了一个包含两列(STRING,STRING)的表,这是我的源数据:

0017    0015
0123    1234
1022    1202
我在R中运行以下命令以使其工作:

bq_perform_load('MY_PROJECT.MYDATASET.MYTABLE', "MY_GCS_OBJECT_LINK", nskip = 0, fields = list(bq_field("test1", "string"),bq_field("test2", "string")) , source_format = "CSV",create_disposition = "CREATE_NEVER", write_disposition = "WRITE_APPEND")

注意:我第一次尝试使用
fields=NULL运行相同的命令,但失败了

在上传之前,可以使用
as.character
将NewID列转换为字符类?它已经是R中的字符了。否则它不能有前导零。BigQuery表中对应的列是字符串数据类型。问题是自动检测忽略了显式数据类型;我不知道如何关闭该功能。谢谢!这非常有帮助。我得到一个错误:使用上述代码时,源URI必须是Google云存储位置。我在地面军事系统上创建了一个桶。如何指示R指定源。谢谢。@PriyankaIndapurkar您应该提供一个完全限定的url,正如所解释的。如何指定源url参数?