如何使用 googleapis bigquery api 进行选择

Posted

技术标签:

【中文标题】如何使用 googleapis bigquery api 进行选择【英文标题】:How do I select using googleapis bigquery api 【发布时间】:2016-08-07 10:57:42 【问题描述】:

我正在使用const google = require('googleapis'); 流式传输到 google bigquery,但现在当我想选择我的数据库时,我感到很困惑。 查看我需要使用bigquery.jobs.query 的文档,但我不明白实际选择应该放在哪里。

var query = `select 1 `;
bqBooking.auth = jwtClient;
bigquery.jobs.query(bqBooking, function (err, rows) 
     if (err) 
         return callback(err);
     

     printExample(rows);
     callback(null, rows);
 );

【问题讨论】:

【参考方案1】:
/**
 * Run an example query.
 *
 * @param Function callback Callback function.
 */
function queryExample (callback) 
  var query = 'SELECT TOP(corpus, 10) as title, COUNT(*) as unique_words\n' +
    'FROM [publicdata:samples.shakespeare];';

  bigquery.query(query, function (err, rows) 
    if (err) 
      return callback(err);
    

    printExample(rows);
    callback(null, rows);
  );

https://cloud.google.com/bigquery/create-simple-app-api

【讨论】:

问题是这个示例使用了 var gcloud = require('gcloud');当我使用 const google = require('googleapis');【参考方案2】:

可以在bigQuery.jobs.query example 的“请求正文”中将查询作为参数传递,如link 所示,请在第二个链接中使用“试用此 API”选项。

var google = require('googleapis');
var bigquery = google.bigquery('v2');

authorize(function(authClient) 
var request = 
// Project ID of the project billed for the query
   projectId: '',  // TODO: Update placeholder value.

   resource: 
       // TODO: Add desired properties to the request body.
       "query": "Select  channel, sum(totalRequests) from 
       conversation_logs.RequestSummary WHERE timeStamp > 
       TIMESTAMP('2017-09-03 00:00:00 UTC') Group by channel;",  
       "maxResults": 1, 
       "useLegacySql": false 
   ,

   auth: authClient
 ;

 bigquery.jobs.query(request, function(err, response) 
     if (err) 
       console.log(err);
       return;
     

     // TODO: Change code below to process the `response` object:
     console.log(JSON.stringify(response, null, 2));
 );
);

function authorize(callback) 
  google.auth.getApplicationDefault(function(err, authClient)) 
  if (err) 
      console.log('authentication failed: ', err);
      return;
  
  if (authClient.createScopedRequired && 
      authClient.createScopedRequired()) 
        var scopes = ['https://www.googleapis.com/auth/cloud-
        platform'];
        authClient = authClient.createScoped(scopes);
      
      callback(authClient);
  );
 

【讨论】:

以上是关于如何使用 googleapis bigquery api 进行选择的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP bigquery 客户端库对 bigquery 数据进行分页?

BigQuery 摘要

Google API - Android BigQuery 客户端的应用级授权

googleapis / python-bigquery:Client.load_dataframe_to_table 失败并出现 PyArrow “TypeError:需要一个整数(获取类型 str

BigQuery - 插入大于 1MB 的行

使用 python 和 BigQuery API 获取 BigQuery 数据集中的表列表