# #node.js #google-bigquery
Вопрос:
Я пытаюсь вставить строку данных в таблицу BigQuery следующим образом:
await bigqueryClient
.dataset(DATASET_ID)
.table(TABLE_ID)
.insert(row);
Но я получаю PartialFailureError
при развертывании облачной функции.
Схема таблицы содержит поля имя (строка) и кампании (запись/повторение), которые я создал вручную с консоли.
hotel_name STRING NULLABLE
campaigns RECORD REPEATED
campaign_id STRING NULLABLE
platform_id NUMERIC NULLABLE
platform_name STRING NULLABLE
reporting_id STRING NULLABLE
И данные, которые я вставляю, — это объект, подобный этому:
const row = {
hotel_name: hotel_name,//string
campaigns: {
id: item.id,//string
platform_id: item.platform_id,//int
platform_name: item.platform_name,//string
reporting_id: item.reporting_id,//string
},
};
Зарегистрированные ошибки не дают большого представления об этой проблеме.
Ответ №1:
Согласно моему тесту, кажется, что здесь есть 2 ошибки. Во-первых, у вас есть campaign_id
схема в то время id
как в JSON.
2-я вещь связана с форматом данных ПОВТОРНОГО режима в JSON. В документации упоминается следующее:
. Обратите внимание, что
addresses
столбец содержит массив значений (обозначается[ ]
). Несколько адресов в массиве являются повторяющимися данными. Несколько полей внутри каждого адреса являются вложенными данными.
Это не так прямо в упомянутом документе (возможно, его можно найти где-то еще), однако при использовании повторного режима следует использовать скобки []
.
Я коротко протестировал его на своей стороне, и, похоже, он должен работать так:
const row = {
hotel_name: hotel_name,//string
campaigns: [ {
campaign_id: item.id,//string
platform_id: item.platform_id,//int
platform_name: item.platform_name,//string
reporting_id: item.reporting_id,//string
}, ]
};
Комментарии:
1. Привет @DeveloperHub. Вам удалось заставить его работать?
Ответ №2:
Эти ошибки-отстой. Фактическую информацию о том, что пошло не так, можно найти в errors
свойстве PartialFailureError. В https://www.atdatabases.org мы переформатируем ошибку, чтобы упростить это, используя: https://github.com/ForbesLindesay/atdatabases/blob/0e1a033264aac33deaff2ab753796049e623ab86/packages/bigquery/src/implementation/BigQueryDriver.ts#L211