python - 在 PySpark 中填写前一天的缺失日期
问题描述
我在以下问题中遇到了同样的问题:
不同之处在于我需要计算两个不同日期之间的小时差,例如在 2019-12-26 22:00:00 和 2019-12-27 09:00:00 之间,并且在这种特殊情况下,以下函数失败因为范围变为负数:
def missing_hours(t1, t2):
return [t1 + relativedelta(hours=-x) for x in range (1, t1.hour-t2.hour)]
missing_hours_udf = udf(missing_hours, ArrayType(TimestampType()))
我尝试以多种方式修改它(例如尝试(t1-t2).hour),但我总是失败。
有谁知道如何正确修改上述功能以获得所需的结果?
解决方案
这是用于处理两个日期之间的填充时间的更新功能
def missing_hours(t1, t2):
diff = t1 - t2
days, seconds = diff.days, diff.seconds
hours = days * 24 + seconds // 3600
return [t1 + relativedelta(hours=-x) for x in range(1, hours)]