想完成類似這樣一個需求:insert overwrite table ... partiton(dt=date_sub('2019-03-13',2))
當然這樣子是行不通的,partition后面那個括號里是不能用函數的,怎么辦呢?
網上一頓狂搜,找到了一個解決辦法!動態分區
上兩個鏈接就懂啦:
https://stackoverflow.com/questions/44886583/parameter-passing-to-partition-is-not-working-in-hive
https://blog.csdn.net/qq_26442553/article/details/80382174
總之就是可以執行了,方法如下:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table ts.dyy_test partition(dt)
select a,b,date_sub('2019-03-23',2) dt from asdf.sldfjkskdjfllsjkkf
where dt='2019-03-15';
