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錯誤,我們想弄清楚它是什麼以便我們可以修復它。 –

相關問題