赞
踩
背景
在我们数据开发过程中业务中有很多计算时间差值的场景,公司业务数据时间格式基本是:yyyyMMdd,,而spark或者hive提供内置函数datediff(),需要传入的时间参数格式:yyyy-MM-dd,为开发时简化代码量与代码可读性,我们通过创建临时udf可以灵活的解决该问题。
import time def dd_datediff(date_now, date_ago, date_type="day"): date_now = time.strptime(str(date_now), '%Y%m%d') date_ago = time.strptime(str(date_ago), '%Y%m%d') # 暂时返回天数 if date_type == 'day': day_num = int((time.mktime(date_now) - time.mktime(date_ago)) / (24 * 60 * 60)) return day_num
spark.udf.register("dd_datediff", lambda x, y: dd_datediff(x, y)) spark.sql("select dd_datediff(20200702, 20200629)") |
效果演示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。