使用javascript API将查询作为作业插入

时间:2014-01-06 11:39:54

标签: javascript google-bigquery

我想使用insert API方法将查询作为作业插入。我想使用javascript API,我似乎没有得到任何相同的例子。当我尝试传递这样的查询时:

function insertQueryAsJob() {
  var request = ggapi.client.bigquery.jobs.insert({
      'projectId':project_id,
      'query': 'SELECT * FROM [test.test] LIMIT 10'
      });
  request.execute(function(response) {     
      $('#result_box').html(JSON.stringify(response, null));
      });
}

我收到如下错误:

Job configuration must contain exactly one job-specific configuration object
(e.g., query, load, extract, spreadsheetExtract), but there were 0

Google没有关于Javascript使用情况的文档。有人可以告诉我吗?

2 个答案:

答案 0 :(得分:1)

我仍然需要尝试使用Javascript,但在此期间还有一个与语言无关的答案:

查看https://developers.google.com/bigquery/docs/reference/v2/jobs/insert上jobs.insert的参考资料,以及https://developers.google.com/bigquery/querying-data上的示例。

上述问题试图插入:

{
  'projectId':project_id,
  'query': 'SELECT * FROM [test.test] LIMIT 10'
}

问题是jobs.insert不接受'查询',而是带有作业配置的主体:

body = {
  'configuration': {
    'query': {
      'query': 'SELECT * FROM [test.test] LIMIT 10'
    }
  }
}

现在有一个结构良好的身体,有一个工作配置:

ggapi.client.bigquery.jobs.insert(
  projectId=project_id,
  body=body
);

答案 1 :(得分:1)

link提供了有关如何调用Javascript API的详细信息。基于此,'body'参数应作为'resource'属性发送。所以:

  var request = gapi.client.bigquery.jobs.insert({
      'projectId':project_id,
      resource:{
        'configuration': {
          'query': {
            'query': 'SELECT * FROM [test.test] LIMIT 10'
          }
      }
  }});

工作正常。