Облачная функция ожидает загрузки файла в корзину и загружает его в BQ. Таблица BQ уже существует. Мой набор данных не определен, хотя я назначаю имя набора данных в верхней части функции. Любые идеи о том, что мой вопрос может быть?
Функция «Follow» возвращает следующую ошибку.
Ошибка: сбой функции. Подробности:
Невозможно прочитать свойство 'таблица' из неопределенного
{
"name": "sample-cloud-storage",
"version": "0.0.1",
"repository": "googleapis/nodejs-bigquery",
"engines": {
"node": ">=4"
},
"dependencies": {
"@google-cloud/bigquery": "1.2.0",
"@google-cloud/storage": "1.5.1",
"yargs": "10.0.3"
},
"devDependencies": {
"@google-cloud/nodejs-repo-tools": "2.1.3",
"ava": "0.24.0",
"nyc": "11.3.0",
"proxyquire": "1.8.0",
"sinon": "4.1.3",
"uuid": "3.1.0"
}
}
exports.ToBigQuery_Stage = (event, callback) => {
//https://stackoverflow.com/questions/49111829/using-cloud-function-to-load-data-into-big-query-table-it-is-appending-to-the-t
const BigQuery = require('@google-cloud/bigquery');
const Storage = require('@google-cloud/storage');
const file = event.data;
const context = event.context;
const projectId = "bi-sales-sms";
const datasetId = "bi-sales-sms:BI_Sales_SMS";
const bucketName = file.bucket;
const filename = file.name;
//const dashOffset = filename.indexOf('-');
//const tableId = filename + "_STAGE";
const tableId = 'Roll_Up_Daily_Sales_Per_Retailer';
console.log('hello norman');
console.log('Load ' + filename + ' into ' + tableId);
const metadata = {
allowJaggedRows: true,
skipLeadingRows: 1
};
//test the print
console.error(BigQuery.Dataset(datasetId));
BigQuery
//issue is here
.Dataset(datasetId)
.table(tableId)
.Load(storage.bucket(bucketName).file(filename),metadata)
.then(results => {
job = results[0];
// Wait for the job to finish
return job;
})
.then(metadata => {
// Check the job's status for errors
const errors = metadata.status.errors;
if (errors && errors.length > 0) {
throw errors;
}
})
.then(() => {
console.log("Job " + job.id + " completed.");
})
.catch(err => {
console.error('ERROR:', err);
});
callback();
};