У меня есть GCS Bucket, в котором есть несколько разных типов файлов, все начинаются с другого префикса. Я хотел использовать BigQuery Data Transfer Service для перемещения данных, но 60-минутное ограничение файла недостаточно для моего случая. Поэтому я пишу облачную функцию, которая запускается через облачный планировщик каждые 10 минут. Моя облачная функция переходит в корзину GCS и добавляет «.ingesting» ко всем текущим файлам. Затем он запускает три разных задания с подстановочным знаком * для загрузки файлов каждого типа в разные таблицы BigQuery.
Проблема, с которой я сталкиваюсь, состоит в том, что, если один из файлов выходит из строя из-за какой-либо ошибки, он не выполняет всю работу. Я хочу обработать все хорошие файлы, затем удалить обработанный, переименовать и переместить плохие. Но по ошибке я не получаю список файлов, вызвавших проблему. У меня есть только GRI URI с подстановочным знаком?
Job ID
test-3:US.54e5797d-bbc4-499d-bce7-
User
test-3@appspot.gserviceaccount.com
Location
United States (US)
Creation time
Jan 21, 2020, 1:16:00 PM
Start time
Jan 21, 2020, 1:16:00 PM
End time
Jan 21, 2020, 1:16:03 PM
Duration
2.2 sec
Destination table
test-3:Data.alpha
Source URI(s)
gs://ready-to-ingest-data/a_*.txt
Вот мой код
const bqMetaData = {
sourceFormat: 'CSV',
fieldDelimiter: '|'
};
...
const numericFileName = "n_*.txt";
const numericTableId = "numeric";
let n_job;
bigquery
.dataset(datasetId)
.table(numericTableId)
.load(storage.bucket(bucketName).file(numericFileName), bqMetaData)
.then(results => {
n_job = results[0];
console.log(`Numeric Ingest Job ${n_job.id} started.`);
ОБНОВЛЕНИЕ: Коллекция ошибок содержит отдельные случаи.