2012-02-17 118 views
0

連接兩個表我有,我已經按年份和月份和日期在蜂巢

「ABC」分區由

分區表日期(年=「2011」,一個月= '08' ,天= '01' )

我想運行一個查詢類似

select * from ABC where dt>='2011-03-01' and dt<='2012-02-01'; 

我怎樣才能運行此查詢機智h年份,月份和日期之上的分區方案?

回答

2

您可能會考慮創建一個由'yyyy-mm-dd'分區的外部表,並使用與現有表相同的位置。您不必複製任何數據,並且您將擁有兩種分區格式的靈活性。

0
select * from ABC where year='2011' and month >= '03' 
UNION 
select * from ABC where year='2012' and month = '01' 
UNION 
select * from ABC where year='2012' and month='02' and day='01'; 

上面的查詢應該可以解決目的,但它實際上既不靈活也不可讀。就像Matt建議的那樣,更好的分區格式應該是yyyy-MM-dd格式的單個字符串變量作爲分區列。但是,如果將年,月,日的分區方案更改爲dt,則可能必須複製數據。在我看來,這是完全值得的。