首页 > 解决方案 > 在 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),但我总是失败。

有谁知道如何正确修改上述功能以获得所需的结果?

标签: pythonpysparkpyspark-sql

解决方案


这是用于处理两个日期之间的填充时间的更新功能

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)]

推荐阅读