数仓开发过程中,经常会有需求变更,添加字段的情况所在,添加完了字段还需要重新跑数据,重新将这个字段的数据加载进去,但是会出现一个坑就是加载的数据为null。
问题所在:
对于分区表添加字段,向已存在分区中插入数据,结果新增字段的值全部为null。
alter table xunying add colums(name string);
insert overwrite table xunying partition(inc_day='1123') select id,amt,'1' name from tb_xunying;
问题所在:
解决方案:
1、将这个分区删除!!删除分区会删除该分区的数据,但是本身数据就是重新跑的,所以删除数据无所谓的,这样再重新跑一次脚本,发现数据就有了。
2、如果介意删除分区的话,因为删除分区有点不专业,那么使用的解决办法就是:cascade
alter table xunying replace columns(id string,amt string,name string,name2 string) cascade;
在添加分区之后 加上cascade,强制添加字段,重新跑一次,数据就会有了。