我在Node.js v8中编写了一个使用@google-cloud/bigquery v1.3.0库的Cloud Function。
我喜欢它,我能够执行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);
但是我一直无法弄清楚如何修改此代码以执行 patch 操作。我希望可以使用非常相似的语法,但找不到。例如。以下示例均无效:
//bigquery.dataset(datasetId).patchTable(viewId,options);
//bigquery.dataset(datasetId).table(viewId).patch(options);
//bigquery.dataset(datasetId).tables(viewId).patch(options);
我可以使用the rest API through Googles reference documents进行补丁操作。但是我只是找不到与上述方法一致的代码解决方案。
有什么想法吗?
答案 0 :(得分:0)
此解决方案较长且异步,但似乎可以使用。如果有人遇到相同的问题
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
}
});
});