这是sql中的逻辑:
coalesce(if effc_dt <= tran_dt select(max of effc_dt) , if effc_dt >= tran_dt select (min of effc_dt)).
我想在pyspark中有类似的逻辑,当effc date小于tran date时,它将选择最接近tran date的effc date,如果不存在较小的date,它将检查较大的值并选择最接近tran date的effc date。
输入Dataframe:
|id|tran_date |effc_date |
|--|-----------|-----------|
|12|2020-02-01 |2019-02-01 |
|12|2020-02-01 |2018-02-01 |
|34|2020-02-01 |2021-02-15 |
|34|2020-02-01 |2020-02-15 |
|40|2020-02-01 |2019-02-15 |
|40|2020-02-01 |2020-03-15 |
预期产量:
|id|tran_date |effc_date |
|--|-----------|-----------|
|12|2020-02-01 |2019-02-01 |
|34|2020-02-01 |2020-02-15 |
|40|2020-02-01 |2019-02-15 |
1条答案
按热度按时间rbl8hiat1#
您可以按日期差排序,并将结果限制为1行: