用Hive SQL求出 a 列 - b 列 的绝对值距离一个给定数组中最近的那个值?

前言

最近碰到一个有意思的需求,跟大家分享一下,如果大家有更好的解法,欢迎在评论区留言!

需求描述

现在一个表 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 

猜你喜欢

转载自blog.csdn.net/u011109589/article/details/132666045