对 BigQuery 的 HTTPS 查询 - 缺少必需的参数

Posted

技术标签:

【中文标题】对 BigQuery 的 HTTPS 查询 - 缺少必需的参数【英文标题】:HTTPS query to BigQuery - Required parameter is missing 【发布时间】:2016-08-26 15:11:10 【问题描述】:

我正在尝试使用 node.js 和 Google 的 bigQuery,并且可以成功地发出请求以获取公共数据集列表和单个数据集的详细信息,但是当我尝试查询其中一个时,我得到 400 'Required parameter is missing',但是它没有告诉我哪个参数。我的代码如下:

var options = 
  host: 'www.googleapis.com',
  headers: 'Authorization': 'Bearer ' + accessCode,
  path: '/bigquery/v2/projects/bigquery-public-data/queries',
  method: 'POST'
;

var query = 
  kind: 'bigquery#queryRequest',
  query: "SELECT * FROM [hacker_news.full_201510]",
  maxResults: 10,
  defaultDataset: 
    datasetId: 'hacker_news',
    projectId: 'bigquery-public-data'
  ,
  timeoutMs: 10000,
  dryRun: true,
  useQueryCache: true,
  useLegacySql: true
;

var callback = function(response) 
  var str = '';

  response.on('data', function (chunk) 
    str += chunk;
  );

  response.on('end', function () 
    console.log(str);
  );


var req = http.request(options, callback);
req.write(JSON.stringify(query));
req.end();

有什么建议吗?

【问题讨论】:

你解决过这个问题吗?我也遇到了同样的问题。 我现在也遇到了同样的问题:( 【参考方案1】:

您似乎包含了本文档中的所有必需参数: https://cloud.google.com/bigquery/docs/reference/v2/jobs/query

我的建议是使用 Node.js 客户端库,这样您就不必手工制作这些请求。

在本文档中,您可以向下滚动并在示例下选择 node.js。

【讨论】:

感谢您的回复。我有两个“手工制作”请求的原因。首先是为了更好地理解 API,其次最终的目标语言没有库支持。

以上是关于对 BigQuery 的 HTTPS 查询 - 缺少必需的参数的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中通过 API 对 BigQuery 表进行分区

在 Python 中运行 BigQuery SQL 查询,如何进行身份验证?

将参数从 Google Cloud 函数 GET 请求传递到 BigQuery

BigQuery 对简单查询很慢

对 BigQuery 查询的错误响应:kind:discovery#restDescription 而不是 bigquery#queryResults

尝试从 golang 广告读取/运行对 bigquery 的查询被拒绝访问:BigQuery BigQuery:未找到具有 Google Drive 范围的 OAuth 令牌