背景
业务上计算业绩需要剔除掉指定放假时间,我们这里的放假时间维护在一个mysql表中,进行动态配置,所以需要自定义函数来计算当前日期几天之后的时间,这几天中如果包含myql表中存储的放假日期,则需要剔除掉,然后进行顺延。
如下,计算2023-01-25这个日期7天之后是什么日期,正常是2023-02-02,但是现在需要剔除掉配置时间confid_days中的两天,最后结果是2023-02-04。需要将这个逻辑写成udf函数,进行使用。
![](https://img-blog.csdnimg.cn/img_convert/bebdc2d65ea56dd1ddb7b5be941f8b96.png)
python代码实现
在资源处右键新建python资源。
![](https://img-blog.csdnimg.cn/img_convert/2f99bffbb60cebda4ba2324b61b415c2.png)
填写代码
![](https://img-blog.csdnimg.cn/img_convert/fa2b7d394cddccfb297a5e1feab2d9d9.png)
阿里云函数注册,其中类名出是--文件名.类名 的组合。
![](https://img-blog.csdnimg.cn/img_convert/06ac1e400719efc313e4cbb517728e6d.png)
测试
select dateadd_exclude_date('2023-01-25 00:00:00',7,array('2023-01-26 00:00:00','2023-01-27 00:00:00')) from ods_saas_crm_un_assign_switch_log_df where ds = '${bizdate}' limit 1;
![](https://img-blog.csdnimg.cn/img_convert/9d06611894a1b33c1a3850d6fc9a71ab.png)
参考文档: