#javascript #node.js #google-bigquery
# #javascript #node.js #google-bigquery
Вопрос:
Я написал bigquery в своем коде. Я хочу получить больший результат.
Я также установил свойство allowLargeResult:true , но все равно получаю сообщение об ошибке: ответ слишком большой для возврата. Подумайте о том, чтобы установить allowLargeResults в true в конфигурации задания. Для получения дополнительной информации см. http s://cloud.google.com/bigquery/troubleshooting-errors
Вот мой Node.js Код :
var google = require('googleapis');
var bigquery = google.bigquery('v2');
var authClient = new google.auth.JWT(
'arjun-dev@mybank-bigquery.iam.gserviceaccount.com',
'keyA.pem',
null, ['https://www.googleapis.com/auth/bigquery']);
var request2 = {
projectId: 'project-bank',
jobId:'job_LHMRhoUfM038QA4jPZHaOESI3Uo',
startIndex: 0,
maxResults: 100000,
timeoutMs: 10000,
configuration:{
allowLargeResults: true
},
auth: authClient
};
var list1 = bigquery.jobs.getQueryResults(request2, function(err, result) {
if (err) {
console.log("### 2 " err);
} else {
console.log(result);
res.send(result);
}
});
Пожалуйста, помогите!
Ответ №1:
Ваш результат может быть слишком большим для возврата, и вам не хватает целевой таблицы, поскольку это обязательно при установке allowLargeResults
true, поскольку вы не можете вернуть большой результат, вместо этого вам нужно записать в целевую таблицу. Если вы позже захотите получить данные, вам необходимо экспортировать таблицу в GCS, а затем загрузить из GCS.
Возврат больших результатов запроса
Обычно максимальный размер ответа на запросы составляет 128 МБ в сжатом виде. Если вы планируете выполнить запрос, который может возвращать большие результаты, вы можете установить allowLargeResults
значение true в конфигурации задания.
Выполнение запросов, возвращающих большие результаты, занимает больше времени, даже если набор результатов невелик, и на них распространяются дополнительные ограничения:
- Необходимо указать целевую таблицу.
- Вы не можете указать предложение верхнего уровня ORDER BY, TOP или LIMIT . Это сводит на нет преимущество использования allowLargeResults, поскольку вывод запроса больше не может вычисляться параллельно.
- Оконные функции могут возвращать большие результаты запроса, только если они используются в сочетании с предложением PARTITION BY .
Комментарии:
1. да, я извлекаю 8 миллионов записей.. Когда я указываю свою ЦЕЛЕВУЮ ТАБЛИЦУ, результат будет their…so я должен снова запросить целевую таблицу .. это правильно. ?
2. вам нужно либо разбить таблицу на страницы, либо экспортировать таблицу в виде файла, как указано
3. проверьте библиотеку, которую вы используете, у них могут быть примеры разбивки на страницы