我試圖使用流式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消失了)請求的響應也沒有錯誤。
有人可以告訴我,如果我做錯了什麼或爲什麼發生這種情況?
任何幫助,非常感謝。
謝謝你,祝你有美好的一天。
你介意分享你的項目和桌面ID嗎?這不是預期的。 –
謝謝喬丹,我可以通過電子郵件將這些郵件發送給您嗎?如果是這樣,我要發送到哪個地址? – user2989892
tigani at google.com –