BigQuery流媒体插件似乎丢失了数据 - 为什么?

时间:2013-11-26 22:44:39

标签: python ruby google-bigquery google-api-client google-api-ruby-client

我尝试使用流式insert_all方法使用ruby中的google-api-client gem将数据插入表中。

所以我开始在Bigquery中创建一个新表(读取和写入priveleges是正确的) 具有以下内容:

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

这是我在ruby中的代码:(我今天早些时候发现tabledata.insert_all是tabledata.insertAll的ruby - google docs / example需要更新)

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已经消失)请求的响应也没有错误。

有人可以告诉我,如果我做错了什么或为什么会这样?

非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:0)

发现这似乎与ui有关(行计数暂时不会填充,尝试提取表中的数据会导致错误“意外。请再试一次。”)。但是,实际存储数据并可以查询。谢谢你的帮助乔丹