2014-01-06 29 views
0

我想使用API​​方法作爲作業插入查詢。我想使用JavaScript 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 

谷歌不會對JavaScript的使用文檔。有人能讓我知道嗎?

回答

1

這提供了詳細信息如何調用Javascript API。基於此,「body」參數應作爲「資源」屬性發送。所以:

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

工作正常。

1

我仍然需要使用Javascript來試試這個,但在此期間與語言無關的答案:

https://developers.google.com/bigquery/docs/reference/v2/jobs/insert看看爲jobs.insert參考,並https://developers.google.com/bigquery/querying-data的例子。

上面的問題試圖插入:

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

現在:

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

問題是jobs.insert不採取「查詢」,但有一個工作配置的體具有工作配置:

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

感謝您的指針,但這也不能在JavaScript中工作。請參閱下面的答案(我根據您的答案進行了另一次嘗試)以獲取正確的配置。 – jacquard