Как разделить таблицу по месяцам и дням в улье
Я создал таблицу с:
CREATE EXTERNAL TABLE extab (
vendorID string,
orderID string ,
ordertime string
)
location '/common_folder/data'
Затем я создал раздел по месяцам и дням
CREATE EXTERNAL TABLE part_extab(
endorID string,
orderID string ,
ordertime string
)
PARTITIONED by (month string, day string)
location '/common_folder/data'
Затем вставьте данные в секционированную таблицу
INSERT OVERWRITE TABLE
select vendorId, orderId, ordertime , month, day
FROM extab
КАК мне извлечь месяц, день из времени заказа??
1 ответ
Решение
Использовать динамическую загрузку раздела. Если ваша дата в правильном формате, month()
а также day()
функции будут работать:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE part_extab partiion (month, day)
select vendorId, orderId, ordertime ,
lpad(month(ordertime),2,0) as month,
lpad(day(ordertime),2,0) as day
FROM extab;
В качестве альтернативы вы можете использовать substr() для извлечения месяца и дня, как в этом ответе