【问题标题】:Creating partitioned table from querying partitioned table通过查询分区表创建分区表
【发布时间】:2019-07-04 02:28:35
【问题描述】:

我有一个现有的日期分区表,我想创建一个新的日期分区表,其中只有原始表中的一列,同时保留原始分区。

我尝试过: 创建一个空的分区表并从查询中复制结果,但是分区丢失了。

如果我还将分区日期作为我不想要的新表中的列包含在内,则以下 Create 语句应该可以工作。从查询结果中加载数据时,有没有办法使用 part_date 列作为分区装饰器?

    CREATE TABLE
      cat_dataset.cats_names(cat_name string)
    PARTITION BY
      part_date AS
    SELECT
      cat_name,
      _PARTITIONDATE AS part_date
    FROM
      `myproject.cat_dataset.cats`

我想避免循环遍历所有日期并将该日期的数据写入新表。从查询结果中加载数据时,有没有办法使用 part_date 列作为分区装饰器?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    INSERT INTO 允许您将_PARTITIONTIME 指定为列,请参阅link。下面的代码应该可以工作:

    CREATE TABLE cat_dataset.cats_names(cat_name string)
    PARTITION BY DATE(_PARTITIONTIME);
    
    INSERT INTO cat_dataset.cats_names (_PARTITIONTIME, cat_name) 
    SELECT _PARTITIONTIME, cat_name
    FROM `myproject.cat_dataset.cats`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 2016-04-13
      • 2015-02-01
      • 2012-09-24
      • 1970-01-01
      • 2020-06-01
      相关资源
      最近更新 更多