0


Hive double类型强转string类型并解决科学计数法问题

1.利用中间表,先将double强转为string(会出现科学计数法)

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table --注意是覆盖写
目标表 PARTITION (dt)
select
cast(
(concat('0.',repeat('0',cast(regexp_extract(字段名,'(E)(-)([0-9]+)',3) as int)-1),regexp_replace(regexp_extract(字段名,'(.+)(E)',1),'\.',''))
)as string)as 字段名,
dt
from 中间表 ;

3.注意利用create创建的中间表没有分区,会报错dt=null

4.如果是分区表则需要在insert前加上

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;


本文转载自: https://blog.csdn.net/weixin_64431102/article/details/130494639
版权归原作者 慎独# 所有, 如有侵权,请联系我们删除。

“Hive double类型强转string类型并解决科学计数法问题”的评论:

还没有评论