在 PySpark 中填写前一天的缺失日期

Filling in missing dates of a previous day in 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)]