首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修正火花中的重叠日期

修正火花中的重叠日期
EN

Stack Overflow用户
提问于 2022-11-23 06:15:42
回答 1查看 30关注 0票数 0

我有一个数据集,它与Date1和Date2中的重叠日期类似

代码语言:javascript
复制
+------+------+------+------+-------+------------+------------+
| Key1 | Key2 | Key3 | Key4 | Value |   Date1    |   Date2    |
+------+------+------+------+-------+------------+------------+
| k1   | k2   | k3   | k4   |    10 | 2022-01-01 | 2026-01-30 |
| k1   | k2   | k3   | k4   |    12 | 2022-06-05 | 2026-01-10 |
| k1   | k2   | k3   | k4   |    14 | 2022-08-07 | 2026-01-15 |
+------+------+------+------+-------+------------+------------+

我想解决这些重叠的问题,让日期像下面这样继续下去-

代码语言:javascript
复制
+------+------+------+------+-------+------------+------------+
| Key1 | Key2 | Key3 | Key4 | Value |   Date1    |   Date2    |
+------+------+------+------+-------+------------+------------+
| k1   | k2   | k3   | k4   |    10 | 2022-01-01 | 2022-06-04 |
| k1   | k2   | k3   | k4   |    12 | 2022-06-05 | 2022-08-06 |
| k1   | k2   | k3   | k4   |    14 | 2022-08-07 | 2026-01-15 |
+------+------+------+------+-------+------------+------------+

从某种意义上说,new_date2 = old_date1 (下一个记录)-1

EN

回答 1

Stack Overflow用户

发布于 2022-11-23 07:13:33

您可以使用窗口函数。

代码语言:javascript
复制
df = df.withColumn('date2', F.expr('nvl(date_sub(lead(date1) over (order by date1), 1), date2)'))
df.show(truncate=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74542501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档