使用云功能将数据加载到BigQuery表中的问题

时间:2018-05-16 15:37:59

标签: javascript node.js google-cloud-platform google-bigquery google-cloud-functions

我在尝试将数据存储备份加载到BigQuery中的现有表时遇到问题。我收到以下错误:

TypeError: bigquery.dataset(...).table(...).load is not a function

我正在关注BigQuery cloud Api回购中的一个示例。

我不确定我是否以错误的方式使用它,但我想要实现的只是让我的云功能从Data Store转储中更新此BigQuery表,而不是每天删除和创建 - 这似乎是反击我以前做的很有成效。

这是我的代码:

exports.processFile = function (event, callback) {

  const BigQuery = require('@google-cloud/bigquery');
  const Storage = require('@google-cloud/storage');

  const bucketName = 'nyt-links-backup-dev';
  const filename = event.data.name;
  const tableId = 'links_data_tbl';
  const projectId = 'nyt-sartre-dev';

  // Instantiates clients
  const bigquery = new BigQuery({
    projectId: projectId,
  });

  const storage = new Storage({
    projectId: projectId,
  });

  const datasetId = 'sartre_sublink_dataset';
  const dataset = bigquery.dataset(datasetId);

  const metadata = {
    sourceFormat: 'AVRO',
  };     

  // Loads data from a Google Cloud Storage file into the table
  bigquery
    .dataset(datasetId)
    .table(tableId)
    .load(storage.bucket(bucketName).file(filename), metadata)
    .then(results => {
      const job = results[0];

      // load() waits for the job to finish
      assert.equal(job.status.state, 'DONE');
      console.log(`Job ${job.id} completed.`);

      // Check the job's status for errors
      const errors = job.status.errors;
      if (errors && errors.length > 0) {
        throw errors;
      }
    })
    .catch(err => {
      console.error('ERROR:', err);
    });
    callback();
};

1 个答案:

答案 0 :(得分:2)

听起来您正在使用一个版本的BigQuery库,该版本在load上没有Table功能。 load功能于2017年12月在version 0.12.0引入,之前称为import