Как установить BigQuery View с помощью Node.js - PullRequest
0 голосов
/ 07 июня 2019

У меня есть облачная функция, написанная в Node.js v8, которая использует библиотеку @ google-cloud / bigquery v1.3.0 .

Мне нравится, я могувыполнить изменения BigQuery, такие как создание представления, используя очень простой код, приведенный ниже, не беспокоясь об обещаниях, и это синхронно.

const bigquery = new BigQuery({projectId: 'my-project'});

const options = {
    view: {
        query: 'SELECT * FROM `my-project.my-datatset.my-table`',
        useLegacySql: false
    }
};

results = await bigquery
 .dataset('my-datatset')
 .createTable('my-view', options);

Но я не смог понять, как этот код можно изменить для выполнения патч операций.Я ожидаю, что будет доступен очень похожий синтаксис, но я не могу его найти.Например, ни один из приведенных ниже примеров не работает:

//bigquery.dataset(datasetId).patchTable(viewId,options);
//bigquery.dataset(datasetId).table(viewId).patch(options);
//bigquery.dataset(datasetId).tables(viewId).patch(options);

Я могу выполнить операцию исправления, которую я хочу, используя остальные API через справочные документы Googles .Но я просто не могу найти кодовое решение, которое согласуется с подходом выше.

Есть идеи?

1 Ответ

0 голосов
/ 11 июня 2019

Это решение длиннее и асинхронно, но, похоже, работает.На случай, если кто-то столкнется с той же проблемой

var {google} = require('googleapis');
var bigQuery = google.bigquery("v2")

google.auth.getApplicationDefault(function(err, authClient) {
    if (err) {
        //Handle error
    }

    if (authClient.createScopedRequired && authClient.createScopedRequired()) {
        var scopes = [
            //Either scope is sufficient according to the spec.
            //https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/patch
            'https://www.googleapis.com/auth/cloud-platform',
            'https://www.googleapis.com/auth/bigquery'
        ];  
        authClient = authClient.createScoped(scopes);
    }

    var request = {
        projectId: 'my-project',
        datasetId:'my-datatset',
        tableId:'my-view',

        resource: {
            view: {
                query: 'SELECT * FROM `my-project.my-datatset.my-table`',
                useLegacySql: false
            }
        },
        // Auth client
        auth: authClient
    };

    tables = bigQuery.tables;
    tables.patch(request, function(err, response) {
        if (err) {
            //Handle error
        } else {
            //Print response
        }
    });  
});
...