I have a table known as "oldtable" which is partitioned by datestamp.
The schema of the "oldtable" is:
I now need to create a new table which is based of this old table and
partitioned by (datestamp, region, property)
The DDL for the new table looks like:
CREATE EXTERNAL TABLE newtable
PARTITIONED BY (newdatestamp STRING, myregion STRING, myproperty STRING)
STORED AS RCFILE
When I try to populate this new table from my old table, I try to use
partitioning which uses values of old columns.
INSERT OVERWRITE TABLE newtable
PARTITION (newdatestamp='20100525', region, property)
from oldtable where datestamp='20100525';
The above statement causes an error and expects hardcoded values for
region and property.
FAILED: Error in semantic analysis: Partition column in the partition
specification does not exist.
How do I specify the partition information such that the new tables,
takes values from "property" and "region" from the old table and uses it
Is there a better way to achieve the above instead of hard coding values
for each and every partition?
Addendum: If the above is possible, how can I define some conditions
where I need to say, If region is not "us" or "asia", put it in another
partition known as misc?