前言
最近碰到一个有意思的需求,跟大家分享一下,如果大家有更好的解法,欢迎在评论区留言!
需求描述
现在一个表 test
中有两个date
类型的字段分别为 h_dt
(持有日期) 和 d_dt
(到期日期),按天分区的分区字段为 p_dt
,给定的数组为 a = [0, 0.08, 0.17, 0.25, 0.5, 0.75, 1, 2, 3, 4, 5, 7, 10, 15, 20, 30, 40, 50]
, (d_dt - h_dt) / 365
为剩余年限,然后求出数组中距离这个剩余年限最近的值。
解决方法
1. 将数组转化为可以关联的表
这里主要用到了 lateral view outer explode
,将一行数据关联数组中的数据后扩展到多行。
with temp as (
select p_dt, num
from