我有一个现有的日期分区表,我想创建一个新的日期分区表,其中只包含原始表中的一列,同时保留原始分区。
我尝试过:创建一个空的分区表,并从查询中复制结果,但随后分区就丢失了。
如果我还将分区日期作为列包含在我的新表中,那么下面的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列作为分区修饰器?
发布于 2019-07-04 02:28:35
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`https://stackoverflow.com/questions/56868043
复制相似问题