我一直在寻找,甚至使用最新的大型查询Java驱动程序:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.81.0</version>
</dependency>
似乎只提供了基于加载/插入时间进行分区的选项。
TimePartitioning.of(Type.DAY);
是否有另一个我应该用于基于特定DATE或TIMESTAMP列进行分区的选项或类?还是Java驱动程序不支持此功能?
答案 0 :(得分:0)
对于Java似乎是不可能的,但对于Python and Go客户端库,DDL语句,UI等来说,似乎是可能的。
答案 1 :(得分:0)
是的,根据客户端文档it is supported。
这里是一个例子:
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
String my_field = "my_field";
Schema schema = Schema.of(Field.of(my_field, LegacySQLTypeName.TIMESTAMP));
// Here is where we set the field we want to be used for the partition
TimePartitioning timePartitioning = TimePartitioning.newBuilder(TimePartitioning.Type.DAY)
.setField(my_field)
.build();
TableDefinition tableDef = StandardTableDefinition.newBuilder()
.setSchema(schema)
.setTimePartitioning(timePartitioning)
.build();
TableInfo tableInfo = TableInfo.newBuilder(TableId.of("dataset", "table"), tableDef).build();
Table table = bigquery.create(tableInfo);