Ошибка: все еще появляется ошибка после установки allowLargeResults в true в конфигурации задания?

#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. проверьте библиотеку, которую вы используете, у них могут быть примеры разбивки на страницы