Google app engine 如何为BigQuery中的嵌套字段指定架构?

Google app engine 如何为BigQuery中的嵌套字段指定架构?,google-app-engine,schema,google-bigquery,google-cloud-storage,Google App Engine,Schema,Google Bigquery,Google Cloud Storage,我正在处理的数据有一个嵌套字段“location”,看起来像: "location": { "city": "Amherst", "region": "NS", "country": "CA" }, List<TableFieldSchema> fields = new ArrayList<TableFieldSchema>(); TableFieldSchema fieldLocation = new TableFieldSchema(); f

我正在处理的数据有一个嵌套字段“location”,看起来像:

"location": {
    "city": "Amherst",
    "region": "NS",
    "country": "CA"
},
List<TableFieldSchema> fields = new ArrayList<TableFieldSchema>();
TableFieldSchema fieldLocation = new TableFieldSchema();
fieldFoo.setName("location");
fieldFoo.setType("record");
TableFieldSchema fieldLocationCity = new TableFieldSchema();
fieldBar.setName("location.city");
fieldBar.setType("string");
...
fields.add(fieldLocation);
fields.add(fieldLocationCity);
TableSchema schema = new TableSchema();
schema.setFields(fields);
如何使用JavaAPI为嵌套字段指定模式

目前,我的代码如下所示:

"location": {
    "city": "Amherst",
    "region": "NS",
    "country": "CA"
},
List<TableFieldSchema> fields = new ArrayList<TableFieldSchema>();
TableFieldSchema fieldLocation = new TableFieldSchema();
fieldFoo.setName("location");
fieldFoo.setType("record");
TableFieldSchema fieldLocationCity = new TableFieldSchema();
fieldBar.setName("location.city");
fieldBar.setType("string");
...
fields.add(fieldLocation);
fields.add(fieldLocationCity);
TableSchema schema = new TableSchema();
schema.setFields(fields);

我想你应该做如下的事情:

List<TableFieldSchema> inner = new ArrayList<TableFieldSchema>();
List<TableFieldSchema> outer = new ArrayList<TableFieldSchema>();

TableFieldSchema fieldLocationCity = new TableFieldSchema();
fieldLocationCity.setName("city");
fieldLocationCity.setType("string");
// Add the inner fields to the list of fields in the record.
inner.add(fieldLocationCity);
...(add region & country, etc)...

TableFieldSchema fieldLocation = new TableFieldSchema();
fieldLocation.setName("location");
fieldLocation.setType("record");
// Add the inner fields to the location record.
fieldLocation.setFields(inner);

outer.add(fieldLocation);

TableSchema schema = new TableSchema();
schema.setFields(outer);
List-inner=new-ArrayList();
List outer=new ArrayList();
TableFieldSchema fieldLocationCity=新TableFieldSchema();
fieldLocationCity.setName(“城市”);
fieldLocationCity.setType(“字符串”);
//将内部字段添加到记录中的字段列表中。
添加(fieldLocationCity);
…(添加地区和国家等)。。。
TableFieldSchema fieldLocation=新的TableFieldSchema();
fieldLocation.setName(“位置”);
fieldLocation.setType(“记录”);
//将内部字段添加到位置记录。
fieldLocation.设置字段(内部);
外部。添加(字段位置);
TableSchema schema=new TableSchema();
schema.setFields(外部);