问题描述:A表关联B表的一个目标值,通过部门和日期做关联,因B表中带有汉字格式如下:2018年5月(月目标),A表中的日期格式为2018-05-01,故A、B两表都需要进行字符串截取,最后的格式应该为“2018-05”。A表中直接用substr(cast(A.creater_time as string),1,7)即可实现,B表则需要把后面的“月”截取掉,然后把“年”替换成“-”,然后进行left join B on B.date=A.date,应该是这样来写:translate(substr(target_date,1,9),'年','-')。
问题呈现:当我用同个方法在Hive和Impal执行时的结果却是不同.
Hive结果如下:
Impala结果如下:
一样的sql语句出现不同的结果.
解决办法:
在Hive中修改translate(substr(target_date,1,9),'年','-')===》translate(substr(target_date,1,7),'年','-'),结果如下:
原因分析:Hive中汉字的字节和impala中汉字的字节长度不同造成。