R в BigQuery Ошибка загрузки данных - PullRequest
0 голосов
/ 05 июля 2018

Я использую пакет R "bigrquery" для загрузки данных из фрейма данных R в существующую таблицу BigQuery следующим образом:

mybq = bq_table(project='...', dataset='...', table=...)
bq_table_upload(x=mybq, values=..., create_disposition='CREATE_NEVER', 
                write_disposition='WRITE_APPEND')

Но я получаю следующее сообщение об ошибке:

Ошибка: неверное обновление схемы. Поле NewID изменило тип с STRING на INTEGER

BigQuery, по-видимому, автоматически определяет формат данных и ошибочно полагает, что столбец NewID со значениями, такими как «00487», является числовым, когда он на самом деле является строкой. Когда я добавляю символ «x» к значениям NewID, ошибка исчезает, и загрузка отлично работает. Есть ли способ отключить автоопределение при загрузке данных с помощью пакета "bigrquery"?

1 Ответ

0 голосов
/ 06 июля 2018

Функция bq_perform_load в той же библиотеке должна быть решением для этого. В этой функции вы можете указать схему с параметром fields, поэтому Bigquery не будет автоматически определять схему, как объяснено здесь .

Я проверил, и это сработало на моем конце. Я создал таблицу с двумя столбцами (STRING, STRING), и это мои исходные данные:

0017    0015
0123    1234
1022    1202

Я запускаю следующую команду в R, чтобы она заработала:

bq_perform_load('MY_PROJECT.MYDATASET.MYTABLE', "MY_GCS_OBJECT_LINK", nskip = 0, fields = list(bq_field("test1", "string"),bq_field("test2", "string")) , source_format = "CSV",create_disposition = "CREATE_NEVER", write_disposition = "WRITE_APPEND")

Примечание: Я впервые попробовал выполнить ту же команду с fields = NULL, и она не удалась.

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