2017-02-24 7 views
1

私は新しいgoogle-cloud-bigqueryとgoogle-cloud-storage APIを使用しています。私は、外部表を照会したい私はこのように作成した:BigQuery Javaクライアント - 外部(フェデレーション)テーブルのクエリ方法

ExternalTableDefinition etd = ExternalTableDefinition.newBuilder(bucketPath, schema, FormatOptions.csv()).build(); 
TableId tableID = TableId.of(dataset, targetTableName); 
TableInfo tableInfo = TableInfo.newBuilder(tableID, etd).build(); 

今、私はこのテーブルを照会したいのですが、QueryRequestを使用して、一時的なものとして、それを持っている:

QueryRequest queryRequest = QueryRequest.newBuilder("select * from table limit 10 ").setUseLegacySql(true).setDefaultDataset(dataset).build(); 
QueryResponse response = client.query(queryRequest); 

しかし、テーブルが存在しないために失敗します。それは理にかなっています。私はこのコマンドラインに似た何かをしようとしています:

bq query --project_id=<project ID> --external_table_definition=wikipedia::/tmp/wikipedia 'select name from wikipedia where name contains "Alex";' 

しかし、Javaで。

要約すると:どのように私は作成して、大きなクエリのJavaクライアントを介して外部、一時テーブルを照会できますか?参考のため https://cloud.google.com/bigquery/external-data-sources#temporary-tables

+0

あなたが解決策をフィンました、私は同様のユースケースがありますか? – user1965449

+0

回答として掲示される – Daniella

答えて

1

、ここでそれを行う方法です:ドキュメントから

リファレンス

public static void main(String[] args) 
{ 

BigQuery bigquery = 
BigQueryOptions.getDefaultInstance().getService(); 


ExternalTableDefinition etd = 
ExternalTableDefinition.newBuilder("gs://", createSchema(), 
FormatOptions.csv()).build(); 

TableId tableId = TableId.of("testdataset", "mytablename"); 


bigquery.create(TableInfo.newBuilder(tableId, etd).build()); 


//Now query the table project.testdataset.mytablename 

} 
関連する問題