#google-bigquery
#google-bigquery
Вопрос:
Это код, который я использую для отправки 1 строки данных в bigquery.
Предполагая следующее:
- Схема таблицы хорошая (работает, когда я создаю таблицу в пользовательском интерфейсе с той же схемой и той же 1 строкой данных)
- Карта, содержащая пары ключ: значение, хороша
- Учетные данные в порядке
- ProjectID, datasetId и tableId верны (проверяются путем пошагового перехода при создании URL-адреса)
Он всегда возвращает ответ без ошибок и следующий вывод: {«kind»:»bigquery#tabledatainserallresponse»} // подтвержденный статус: 200
Существует вероятность того, что структура моей строки неверна, но я потратил много времени на ее разборку. Насколько я понимаю
-
Список (из TableDataInsertAllRequest.Строки объектов)
-
Запрос tabledatainsertall.Объект Rows содержит ключ «json», значение которого равно ->
-
Карта (которая содержит требуемые значения JSON)
List<TableDataInsertAllRequest.Rows> rowsList = new ArrayList<>(); TableDataInsertAllRequest.Rows oneRow = new TableDataInsertAllRequest.Rows(); try { Map<String, Object> objectMap = new TreeMap<>(); oneRow.setJson(objectMap); } catch (Exception e){ e.printStackTrace(); } rowsList.add(oneRow); TableDataInsertAllRequest content = new TableDataInsertAllRequest(); content.setKind("bigquery#tableDataInsertAllRequest"); content.setRows(rowsList); Bigquery.Tabledata.InsertAll request = bigqueryService.tabledata().insertAll(projectId, datasetId, tableId, content); TableDataInsertAllResponse response = request.execute();
Есть идеи?
Комментарии:
1. Насколько велика задержка? Согласно документации ожидается несколько секунд: cloud.google.com/bigquery/streaming-data-into-bigquery Потоковые данные доступны для анализа в режиме реального времени в течение нескольких секунд после первой потоковой вставки в таблицу.
Ответ №1:
Нашел решение, видимо, я пропустил его в документах.
https://cloud.google.com/bigquery/streaming-data-into-bigquery
«Доступ к данным для операций копирования и экспорта может занять до 90 минут …»
PS для тех, кто сталкивается с этими проблемами, чтобы узнать, действительно ли данные были загружены, запрашивайте таблицу, в ней должны быть данные почти сразу после потоковой передачи.
** Обязательно знайте ограничения потоковой передачи, иначе вы получите случайную ошибку 400. Приходилось отбирать мои данные для каждого запроса.