dim的表,只有一天的分区的表,才交换分区,目的是保证在处理单分区的时候不影响表的性能
下面是交换分区的案例:
CREATE TABLE `dm_stock_itmst_info_df` (
`item_nbr` int(11) NULL COMMENT "商品编码",
`tera_item_nbr` int(11) NULL COMMENT "tera商品编码",
`store_nbr` int(11) NULL COMMENT "门店号",
`division_1` varchar(200) NULL COMMENT "分区1",
`division_2` varchar(200) NULL COMMENT "分区2",
`dept_nbr` int(11) NULL COMMENT "部门编号",
`cate_nbr` int(11) NULL COMMENT "品类编码",
`fineline` varchar(200) NULL COMMENT "细分品类编码",
`upc` varchar(200) NULL COMMENT "UPC编号",
`store_price` decimal64(18, 2) NULL COMMENT "门店售价",
`unit_cost` decimal64(18, 2) NULL COMMENT "商品单位成本",
`whse_nbr` int(11) NULL COMMENT "DC编号",
`channel_mthd_code` int(11) NULL COMMENT "送货方式编码",
`channel_mthd` varchar(200) NULL COMMENT "送货方式",
`stop_repl_eff_date` date NULL COMMENT "停止补货生效日期",
`stop_repl_expir_date` date NULL COMMENT "停止补货失效日期",
`drp_time_fence` date NULL COMMENT "可以开始补货日期",
`is_sro` int(11) NULL COMMENT "是否停止系统补货SRO",
`is_drp` int(11) NULL COMMENT "是否停止补货DRP",
`is_with_eol` int(11) NULL COMMENT "是否退场策略商品",
`is_playbook` int(11) NULL COMMENT "是否playbook商品",
`is_artr` int(11) NULL COMMENT "是否AR/TR变价商品",
`is_prom` int(11) NULL COMMENT "是否促销商品",
`is_slow_moving` int(11) NULL COMMENT "是否慢销商品",
`manual_exp_date` date NULL COMMENT "手工补货失效日期",
`is_on_mod` varchar(200) NULL COMMENT "在图商品",
`is_o2o` int(11) NULL COMMENT "O2O商品",
`is_jddj` int(11) NULL COMMENT "京东到家",
`is_wmdj_jsd` int(11) NULL COMMENT "沃尔玛到家极速达",
`is_wmdj_qcp` int(11) NULL COMMENT "沃尔玛到家全城配",
`store_type` varchar(200) NULL COMMENT "业态",
`is_count_instock_all` int(11) NULL COMMENT "是否计算有货,包含SRO",
`is_instock_all` int(11) NULL COMMENT "对比预测是否有货,包含SRO",
`is_instock_all_2d` int(11) NULL COMMENT "对比预测2天是否有货,包含SRO",
`is_count_instock` int(11) NULL COMMENT "是否计算有货,不包含SRO",
`is_instock` int(11) NULL COMMENT "对比预测是否有货,不包含SRO",
`is_instock_2d` int(11) NULL COMMENT "对比预测2天是否有货,不包含SRO",
`o2o_min_qty` int(11) NULL COMMENT "最小露出量",
`is_instock_o2o` int(11) NULL COMMENT "对比o2o露出量是否有货",
`etl_load_time` datetime NULL COMMENT "数据导入时间",
`ts` date NULL COMMENT "日期分区"
) ENGINE=OLAP
DUPLICATE KEY(`item_nbr`)
COMMENT "门店商品维表"
PARTITION BY RANGE(`ts`)
(
start ("2022-01-01") end ("2025-12-31") every (interval 1 day)
)
DISTRIBUTED BY HASH(`item_nbr`) BUCKETS 1
PROPERTIES (
"replication_num" = "3",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"dynamic_partition.start" = "-2147483648",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "10",
"dynamic_partition.replication_num" = "2",
"in_memory" = "false",
"storage_format" = "DEFAULT"
);
-- 删除临时分区
alter table ${DM}.dm_scm_repl_analysis_sams_df drop temporary partition if exists sr_tpar_yestoday_str;
-- 创建临时分区
alter table ${DM}.dm_scm_repl_analysis_sams_df
add temporary partition if not exists sr_tpar_yestoday_str values [('${yyyy-MM-dd-1d}'), ('${yyyy-MM-dd}'))
( "in_memory" = "false") distributed by hash(`ts`) buckets 1;
-- 插入临时分区[]
insert into ${DM}.dm_scm_repl_analysis_sams_df temporary partition (sr_tpar_yestoday_str)
select
item_nbr -- 商品编号
, upc_nbr -- 商品条码
, store_nbr -- 门店编号
, mds_fam_nbr -- 商品父编号
, repl_group_nbr -- 补货组编号
, cate_nbr -- 大类编号
, cate_name_cn -- 大类中文名称
, sub_cate_nbr -- 子类编号
, sub_cate_name_cn -- 子类中文名称
, item_name_cn -- 商品中文名称
, item_name_en -- 商品英文名称
, item_type_nbr -- 商品类型编号
, warm_layer -- 温层
, vnpk_qty -- 供应商箱包规格
, whpk_qty -- 仓库箱包规格
, vendor_nbr_6d -- 供应商号_6位
, vendor_nbr_9d -- 供应商号_9位
, vendor_name -- 供应名称
, ti -- 单层箱数
, hi -- 堆叠层数
, tihi_item_qty -- 卡板商品数量
, season_code -- 季节编码
, item_cluster_code -- 商品流速编码
, region_name_cn -- 管理大区名称-中文
, region_name_en -- 管理大区名称-英文
, city_name_cn -- 城市名称-中文
, city_name_en -- 城市名称-英文
, province_name_cn -- 省份名称-中文
, province_name_en -- 省份名称-英文
, store_name_short -- 门店简称
, sub_operation_type -- proto类型
, open_date -- 开店日期
, is_comp_store -- 是否可比店
, price_without_tax -- 门店未税零售价
, store_cost_amt -- 门店成本金额
, store_item_status_code -- 商品门店状态编码
, calc_date -- 计算日期
, year_week_wm -- 沃尔玛周
, calc_month -- 计算月份
, calc_year -- 计算年份
, is_di -- 是否进口
, is_nbo -- 是否永不缺货商品
, is_top -- 是否top商品
, is_db_next_sched -- 是否DB下一档期
, db_next_sched_start_date -- DB下一档期开档日期
, db_next_sched_end_date -- DB下一档期结束日期
, db_next_sched_main_item_nbr -- DB下一档期主商品编码
, is_db_curr_sched -- 是否DB当前档期
, db_curr_sched_start_date -- DB当前档期开档日期
, db_curr_sched_end_date -- DB当前档期结束日期
, db_curr_sched_main_item_nbr -- DB当前档期主商品编码
, is_feature_curr_sched -- 是否feature当前档期
, feature_curr_sched_start_date -- feature当前档期开档日期
, feature_curr_sched_end_date -- feature当前档期结束日期
, feature_curr_sched_main_item_nbr -- feature当前档期主商品编码
, feature_display_type_code -- feature陈列类型
, feature_display_qty -- feature陈列量
, shelf_display_type -- 货架陈列类型
, shelf_display_qty -- 货架陈列量
, is_count_instock -- 是否计算有货率
, is_instock -- 是否整体有货
, is_club_instock -- 是否母店有货
, is_cloud_count_instock -- 是否云仓计算有货率
, is_cloud_instock -- 是否云仓有货
, cloud_safety_stock_qty -- 云仓安全库存数量
, safety_stock_qty -- 门店安全库存数量
, cloud_avail_qty_00h -- 0点云仓可用库存数量
, cloud_on_hand_qty_00h -- 0点云仓在店库存数量
, club_on_hand_qty_00h -- 0点母店在店库存数量
, cloud_avail_qty -- 8点云仓可用库存数量
, cloud_on_hand_qty -- 8点云仓在店库存数量
, club_on_hand_qty -- 8点母店在店库存数量
, on_hand_qty_00h -- 0点在店库存数
, on_hand_qty -- 8点在店库存数
, on_order_qty -- 在订库存数
, in_tras_qty -- 在途库存数
, in_whs_qty -- 在仓库存数
, in_whs777_qty -- 在库777库存数
, total_stock_qty -- 库存总数(0点现货库存)
, on_hand_retail_amt_00h -- 0点在店库存零售额
, on_hand_retail_amt -- 8点在店库存零售额
, on_order_retail_amt -- 在订库存零售额
, in_tras_retail_amt -- 在途库存零售额
, in_whs_retail_amt -- 在仓库存零售额
, in_whs777_retail_amt -- 在库777库存零售额
, total_stock_retail_amt -- 库存总零售额(0点现货库存)
, on_hand_cost_amt_00h -- 0点在店库存成本金额
, on_hand_cost_amt -- 8点在店库存成本金额
, on_order_cost_amt -- 在订库存成本金额
, in_tras_cost_amt -- 在途库存成本金额
, in_whs_cost_amt -- 在仓库存成本金额
, in_whs777_cost_amt -- 在库777库存成本金额
, total_stock_cost_amt -- 库存总成本金额(0点现货库存)
, sales_qty_l7d -- 近7日销量
, sales_amt_l7d -- 近7日销售额
, sales_qty_l28d -- 近28日销量
, sales_amt_l28d -- 近28日销售额
, sales_qty -- 当日销售量
, sales_cost_amt -- 当日销售成本
, sales_retail_amt -- 当日销售额
, online_sales_qty -- 当日线上销售量
, online_sales_cost_amt -- 当日线上销售成本
, online_sales_retail_amt -- 当日线上销售额
, offline_sales_qty -- 当日线下销售量
, offline_sales_cost_amt -- 当日线下销售成本
, offline_sales_retail_amt -- 当日线下销售额
, cloud_sales_qty -- 云仓履约当日销售数量
, cloud_sales_cost_amt -- 云仓履约当日销售成本
, cloud_sales_retail_amt -- 云仓履约当日销售额
, sales_fcst_qty_w -- 本周预测销量
, sales_fcst_qty_nt1w -- 未来第1周预测销量
, sales_fcst_qty_nt2w -- 未来第2周预测销量
, sales_fcst_qty_nt3w -- 未来第3周预测销量
, sales_fcst_qty_nt4w -- 未来第4周预测销量
, sales_fcst_qty_nt5w -- 未来第5周预测销量
, sales_fcst_qty_nt6w -- 未来第6周预测销量
, sales_fcst_qty_n4w -- 未来4周预测销量,不包含当周
, smape_weight_lt1w -- 上周预测准确率SMAPE权重
, fcst_accuracy_denom -- 预测准确率分母
, rcvd_item_qty -- 当日商品收货数量
, rcvd_item_cost_amt -- 当日商品收货成本金额
, rcvd_item_retail_amt -- 当日商品收货零售金额
, rtv_qty -- 当日退货数量
, rtv_cost_amt -- 当日退货成本
, rtv_retail_amt -- 当日退货零售额
, waste_qty -- 当日损耗数量
, waste_cost_amt -- 当日损耗成本
, dc_on_hand_qty -- DC现货库存数量
, dc_on_hand_cost -- DC现货库存成本
, dc_on_hand_retail -- DC现货库存零售额
, orig_vnpk_order_box_qty -- 原始截止日期供应商规格订货箱数
, orig_vnpk_rcvd_box_qty -- 原始截止日期供应商规格收货箱数
, orig_vnpk_ot_rcvd_box_qty -- 原始截止日期供应商规格准时收货箱数
, orig_vnpk_early_rcvd_box_qty -- 原始截止日期供应商规格提前收货箱数
, orig_vnpk_late_rcvd_box_qty -- 原始截止日期供应商规格超时收货箱数
, orig_vnpk_early_rcvd_box_qty_1d -- 原始截止日期供应商规格提前1天收货箱数
, orig_vnpk_late_rcvd_box_qty_1d -- 原始截止日期供应商规格超时1天收货箱数
, mabd_vnpk_order_box_qty -- 最新截止日期供应商规格订货箱数
, mabd_vnpk_rcvd_box_qty -- 最新截止日期供应商规格收货箱数
, pur_update_time -- 采购指标更新时间
, etl_load_time -- ETL刷数时间
, ts -- 分区日期
from hive.${DM}.dm_scm_repl_analysis_sams_df
where ts = '${yyyy-MM-dd-1d}'
;
-- 交换分区
alter table ${DM}.dm_scm_repl_analysis_sams_df replace partition (p${yyyyMMdd-1d}) with temporary partition (sr_tpar_yestoday_str);