BigQuery Node.js api创建外部表

时间:2017-03-20 23:52:37

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

我正在尝试使用node.js API从Google云端功能创建外部表。该功能将从GCS存储桶更改中触发。我可以创建一个本机表,但不能创建外部表。在导入here的node.js api中,configuration.load元数据没有将其指定为外部表的设置。这是我到目前为止创建本机表的代码。我的问题是“如何使用Node.js Api为GCS存储桶创建外部表”

    const projectId = "N"
    const bigquery = BigQuery({
        projectId: projectId
    });
    const storage = Storage({
        projectId: projectId
    });

    const dataset = bigquery.dataset("dataset");

    const table = dataset.table("test_data");

    const bucket = storage.bucket("my-bucket");

    const file = bucket.file("2017/03/02/*");

    let job;

    // Imports data from a GCS file into a table
    return table.import(file,{"sourceFormat":"AVRO"})
        .then((results) => {
            job = results[0];
            console.log(`Job ${job.id} started.`);
            return job.promise();
        })
        .then((results) => {
            console.log(`Job ${job.id} completed.`);
            return results;
        });

1 个答案:

答案 0 :(得分:1)

我在阅读了一些文档之后找到了解决方案。联合表通过加载/导入它们不起作用。它们只是用externalConfig设置。所以这段代码对我有用

const dataset = bigquery.dataset("dataset");
var options = {
    "externalDataConfiguration": {
        "sourceUris": ["gs://my-bucket/2017/03/20/*"],
        "sourceFormat": "AVRO",
        "maxBadRecords": 0,
        "autodetect": true
    }
}
dataset.createTable("test_data_20170320",options, function(err, table, apiResponse){
    console.log(err)
    console.log(table)
    console.log(apiResponse)
})