BigQueryJava客户端-如何查询外部(联邦)表?

BigQueryJava客户端-如何查询外部(联邦)表?,java,google-bigquery,external-tables,federated-table,Java,Google Bigquery,External Tables,Federated Table,我正在使用新的google cloud bigquery和google cloud存储api。我想查询一个外部表,我是这样创建的: ExternalTableDefinition etd = ExternalTableDefinition.newBuilder(bucketPath, schema, FormatOptions.csv()).build(); TableId tableID = TableId.of(dataset, targetTableName); TableInfo tab

我正在使用新的google cloud bigquery和google cloud存储api。我想查询一个外部表,我是这样创建的:

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";'
bq query--project\u id=--external\u table\u definition=wikipedia::/tmp/wikipedia'从wikipedia中选择名称,其中名称包含“Alex”;'
但是在Java中

总结一下:如何通过Java客户端创建和查询一个外部临时表以进行大查询

参考文件:

以下是操作方法供参考:

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

}

你找到解决方案了吗?我有一个类似的用例?作为答案发布