通过查询分区表创建分区表

时间:2019-07-03 10:27:23

标签: google-bigquery

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

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

如果我也将分区日期作为新表中的一列包含在内,则下面的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列作为分区装饰器?

1 个答案:

答案 0 :(得分:2)

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`