【发布时间】:2016-04-03 19:04:22
【问题描述】:
当我在 BigQuery Web UI 中运行查询时,结果会显示在一个表中,其中每个字段的名称和类型都是已知的(即使字段是 COUNT()、AVG()、...操作,字段类型当然是已知的)。 然后可以将结果直接导出为 table/json/csv。
我的问题是,当我在我的 java 项目中检索查询结果时,例如有一个查询:
String query = "SELECT nationality, COUNT(DISTINCT personID) AS population
FROM Dataset.Table
GROUP BY nationality";
PCollection<TableRow> result = p.apply(BigQueryIO.Read.fromQuery(query));
...是否可以在不显式定义的情况下获得resultPCollection 中的TableRow 架构?
我认为这一定是可能的,因为在使用 BigQuery Web UI 时可以使用相同的查询。
但我不知道该怎么做......
TableSchema schema = // function of PCollection<TableRow> result ?
result.apply(BigQueryIO.Write
.named("Write Results Table")
.to(getTableReference(tableName))
.withSchema(schema));
这样查询结果总是可以自动导出/保存到新表中(然后只需要显式提供表名)。
有什么想法吗?任何帮助将不胜感激:)
【问题讨论】:
标签: java google-bigquery google-cloud-dataflow