我想从Java的BigQuery中创建一个分区表(按DATE类型的字段进行分区)。我搜索了很多,但是没有太多信息。我使用的代码是

        TimePartitioning timePartitioning = TimePartitioning.of(TimePartitioning.Type.DAY);
        timePartitioning.toBuilder().setField("col3");
        TableDefinition tableDefinition = StandardTableDefinition.newBuilder().setSchema(schema2).setTimePartitioning(timePartitioning).build();
        TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();
        bigquery.create(tableInfo);

在这里,我有几个问题
  • 即使我们要按日期分区,也应该使用TimePartitioning吗?
  • 我无法在BigQuery用户界面中的“分区字段”附近看到列名。我使用this作为参考。我必须使用TimePartitioning类,而不是TimePartitioningBuilder,因为setTimePartitioning()仅接受TimePartitioning。
  • 最佳答案

    最简单的方法是发出标准查询-如果可以从Java查询(您已经这样做了?),只需发送如下查询:

    #standardSQL
    CREATE TABLE `project.dataset.table`
    (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >,
       date_column DATE
    )
    PARTITION BY date_column
    CLUSTER BY i_recommend_you_to_choose_a_clustering_column
    

    07-26 09:30