Потоковая вставка BigQuery Все, похоже, теряет данные - почему?
Я пытаюсь использовать потоковый метод insert_all для вставки данных в таблицу, используя гем google-api-client в ruby.
Итак, я начинаю с создания новой таблицы в Bigquery (права чтения и записи правильны) со следующим содержимым:
+-----+-----------+-------------+
| Row | person_id | person_name |
+-----+-----------+-------------+
| 1 | 1 | ABCD |
| 2 | 2 | EFGH |
| 3 | 3 | IJKL |
+-----+-----------+-------------+
Это мой код в ruby: (сегодня я обнаружил, что tabledata.insert_all - это ruby для tabledata.insertAll - необходимо обновить документацию / пример Google)
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 |
+-----+-----------+-------------+
Итак, что дает? Я потерял данные.... (идентификаторы 11 и 5 исчезли) Ответы на запрос также не содержат ошибок.
Может кто-нибудь сказать мне, если я делаю что-то неправильно или почему это происходит, пожалуйста?
Буду признателен за любую оказанную помощь.
Спасибо и хорошего дня.
1 ответ
Обнаружено, что это как-то связано с пользовательским интерфейсом (счетчик строк не заполняется некоторое время, а попытка извлечь данные из таблицы приводит к ошибке "Неожиданно. Пожалуйста, попробуйте еще раз"). Однако данные на самом деле хранятся и могут быть запрошены. Спасибо за помощь Джордан