Метод Big Query insertAll в Java не отражает изменений в таблице - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь вставить данные в таблицу больших запросов, используя метод insertAll.

Вот так выглядит мой код метода вставки -

public void insertIntoTable(String datasetName, String tableName) {
    TableId tableId = TableId.of(datasetName, tableName);
    String fieldName = "testField";

    Map<String, Object> rowContent = new HashMap<>();
    rowContent.put(fieldName, "testVal");


    InsertAllResponse response = bigquery.insertAll(InsertAllRequest.newBuilder(tableId).addRow("rowId", rowContent).build());

    if (response.hasErrors()) {
      for (Map.Entry<Long, List<BigQueryError>> entry : response.getInsertErrors().entrySet()) {
        System.out.println(entry.getValue().toString());
      }
    }
}

Хотя это не таквыдает любую ошибку, но все еще данные не вставляются в мою таблицу.

Согласно документу контроля доступа:https://cloud.google.com/bigquery/docs/access-control

Для использования метода insertAll пользователю потребуется разрешение bigquery.tables.updateData.И для использования этого разрешения пользователю необходимо иметь роль bigquery.dataEditor, которая у меня уже есть.

Нет проблем с разрешением, потому что в другом методе я создаю таблицу, и таблица создаетсяуспешно в Big Query.

TableName и datasetName также верны, я тестировал их в режиме отладки.

Еще одна проблема, о которой я могу подумать, это проблема несоответствия типов.Но это также не так, потому что я проверил это, и тип только String.Ниже приведена подробная информация о прилагаемой схеме -

enter image description here

Могут ли быть какие-либо другие проблемы, которые я могу упустить здесь?

=============================================Отредактированная часть -Мне было отмечено, что данные потока не отражаются в пользовательском интерфейсе, для просмотра данных мы должны запросить таблицу.

Теперь я столкнулся с новой проблемой.Я выполнил вышеупомянутую функцию 6 раз, каждый раз с другим значением.В основном я менял только эту строку -rowContent.put(fieldName, "testVal");В первый раз, когда я выполнил метод, значение вставки было testVal.

Остальные пять раз, когда я выполнил метод, я изменил эту строку кода -Исполнение 1: rowContent.put(fieldName, "testVal1");Исполнение 2: rowContent.put(fieldName, "testVal2");Исполнение 3: rowContent.put(fieldName, "testVal3");Исполнение 4: rowContent.put(fieldName, "testVal4");Исполнение 5: rowContent.put(fieldName, "testVal5");

Так что в идеале в моей таблице должно быть 6 строк со значениями -testValtestVal1testVal2testVal3testVal4testVal5

Но я могу видеть только две строки, когда я запрашиваю мою таблицу.

enter image description here

Почему она показывает только 2 строкивместо 6?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...