是否可以从01
开始创建2017-01-02'
这样的分区,其中01
是月?
我有每日销售记录,我需要像select * from sales where month = '01'
那样进行查询。因此,如果我能按月对每日销售进行分区,那将会更好。但我的数据的格式为2017-01-01
并且正在执行
create table tl (columns ......) partitioned by (date <datatype> )
将每天创建分区,这是我想要的最后一件事。
我需要动态创建分区。
答案 0 :(得分:3)
注意: - 您需要在create语句中转义日期列(通过使用`即在列名称后面反引号)。因为date是hive中的数据类型。
您可以动态创建分区: - 通过在查询中设置以下参数。
set hive.exec.dynamic.partition.mode=nonstrict;
除此之外,您还需要从源表中仅选择月份部分: -
insert into table sales partition(date) select columns...,SUBSTR(date,5,2) from source_table
此insert语句将创建分区。
显示分区销售
date=01
date=02
date=03
date=04