2016-11-19 55 views
1

我使用Google电子表格中的数据查询联邦表。继发行720 https://code.google.com/p/google-bigquery/issues/detail?id=720 建议我创建了下面的代码:BigQuery:在通过文件格式匹配时遇到错误

Set<String> scopes = new HashSet<>(); 
    scopes.add(BigqueryScopes.BIGQUERY); 
    scopes.add("https://www.googleapis.com/auth/drive"); 
    scopes.add("https://www.googleapis.com/auth/spreadsheets"); 
    final HttpTransport transport= new NetHttpTransport(); 
    final JsonFactory jsonFactory= new JacksonFactory(); 
    GoogleCredential credential = new GoogleCredential.Builder() 
       .setTransport(transport).setJsonFactory(jsonFactory) 
       .setServiceAccountId(GC_CREDENTIALS_ACCOUNT_EMAIL) 
       .setServiceAccountScopes(scopes) 
       .setServiceAccountPrivateKey(getPrivateKey())  
       .build(); 
    String omgsql = "SELECT * FROM [<myproject>:<mydataset>.failures] LIMIT 1000"; 
    JobReference jobIdomg = startQuery(bigquery, "<myproject>", omgsql); 

    // Poll for Query Results, return result output 
    Job completedJobomg = checkQueryResults(bigquery, "<myproject>", jobIdomg); 
    GetQueryResultsResponse queryResultomg = bigquery.jobs() 
     .getQueryResults(
      "<myproject>", completedJobomg 
       .getJobReference() 
       .getJobId() 
     ).execute(); 
    List<TableRow> rowsomg = queryResultomg.getRows(); 

没有https://www.googleapis.com/auth/drive范围作业插入,用后立即失效 - 在完成失败。

Inserting Query Job: SELECT * FROM [<myproject>:<mydataset>.failures] LIMIT 1000 
Job ID of Query Job is: job_S3-fY5jrb4P3UhVgNGeRkDYQofg 
Job status (194ms) job_S3-fY5jrb4P3UhVgNGeRkDYQofg: RUNNING 
Job status (1493ms) job_S3-fY5jrb4P3UhVgNGeRkDYQofg: RUNNING 
Job status (2686ms) job_S3-fY5jrb4P3UhVgNGeRkDYQofg: RUNNING 
... 
Job status (29881ms) job_S3-fY5jrb4P3UhVgNGeRkDYQofg: DONE 
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "global", 
    "location" : "/gdrive/id/1T4qNgi9vFJF4blK4jddYf8XlfT6uDiqNpTExWf1NMyY", 
    "locationType" : "other", 
    "message" : "Encountered an error while globbing file pattern.", 
    "reason" : "invalid" 
    } ], 
    "message" : "Encountered an error while globbing file pattern." 
} 
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145) 

所以这里的问题 - 我还缺少什么?或者它只是一个大问题?

回答

3

好的,经过一天的实验 - 您用于获取Google Credential的帐户应该可以访问创建外部表的文件。希望这会帮助某人。