0

我试图使用流式insert_all方法在Ruby中使用google-api-client gem将数据插入到表中。BigQuery streaming insertAll似乎会丢失数据 - 为什么?

于是我开始创建BigQuery中(读写priveleges是正确的)新表 具有以下内容:

+-----+-----------+-------------+ 
| Row | person_id | person_name | 
+-----+-----------+-------------+ 
| 1 |   1 | ABCD  | 
| 2 |   2 | EFGH  | 
| 3 |   3 | IJKL  | 
+-----+-----------+-------------+ 

这是我在Ruby代码:(我今天早些时候发现资料表。 insert_all是红宝石的tabledata.insertAll - 第一次谷歌文档/例如需要更新)

def streaming_insert_data_in_table(table, dataset=DATASET) 
    body = {"rows"=>[ 
     {"json"=> {"person_id"=>10,"person_name"=>"george"}}, 
     {"json"=> {"person_id"=>11,"person_name"=>"washington"}} 
    ]} 

    result = @client.execute(
     :api_method=> @bigquery.tabledata.insert_all, 
     :parameters=> { 
      :projectId=> @project_id.to_s, 
      :datasetId=> dataset, 
      :tableId=>table}, 
     :body_object=>body, 
    ) 
    puts result.body 
end 

所以我跑我的代码和所有出现的罚款。我看到这个表上的BigQuery:

+-----+-----------+-------------+ 
| Row | person_id | person_name | 
+-----+-----------+-------------+ 
| 1 |   1 | ABCD  | 
| 2 |   2 | EFGH  | 
| 3 |   3 | IJKL  | 
| 4 |  10 | george  | 
| 5 |  11 | washington | 
+-----+-----------+-------------+ 

然后我更改数据的方法:

body = {"rows"=>[ 
     {"json"=> {"person_id"=>5,"person_name"=>"john"}}, 
     {"json"=> {"person_id"=>6,"person_name"=>"kennedy"}} 
    ]} 

运行的方法和BigQuery中得到这样的:

+-----+-----------+-------------+ 
| Row | person_id | person_name | 
+-----+-----------+-------------+ 
| 1 |   1 | ABCD  | 
| 2 |   2 | EFGH  | 
| 3 |   3 | IJKL  | 
| 4 |  10 | george  | 
| 5 |   6 | kennedy  | 
+-----+-----------+-------------+ 

所以, 是什么赋予了?我丢失了数据....(ID 11和ID 5消失了)请求的响应也没有错误。

有人可以告诉我,如果我做错了什么或为什么发生这种情况?

任何帮助,非常感谢。

谢谢你,祝你有美好的一天。

+0

你介意分享你的项目和桌面ID吗?这不是预期的。 –

+0

谢谢乔丹,我可以通过电子邮件将这些邮件发送给您吗?如果是这样,我要发送到哪个地址? – user2989892

+0

tigani at google.com –

回答

0

发现这似乎与ui有关(行计数没有填充一段时间,并试图提取表中的数据导致错误“意外,请再试一次”)。但是数据实际上是存储的并且可以被查询。感谢您的帮助约旦

+0

您能否详细说明“意外,请再试一次”错误的结果?每当你看到这个错误时,它就是一个BigQuery错误,我们想弄清楚它是什么以便我们可以修复它。 –

相关问题