问题描述
在以下情况下,我需要一些专家意见:
我有以下数据框df1
:
+------------+------------+-------+-------+
| Date1 | OrderDate | Value | group |
+------------+------------+-------+-------+
| 10/10/2020 | 10/01/2020 | hostA | grp1 |
| 10/01/2020 | 09/30/2020 | hostB | grp1 |
| Null | 09/15/2020 | hostC | grp1 |
| 08/01/2020 | 08/30/2020 | hostD | grp1 |
| Null | 10/01/2020 | hostP | grp2 |
| Null | 09/28/2020 | hostQ | grp2 |
| 07/11/2020 | 08/08/2020 | hostR | grp2 |
| 07/01/2020 | 08/01/2020 | hostS | grp2 |
| NULL | 07/01/2020 | hostL | grp2 |
| NULL | 08/08/2020 | hostM | grp3 |
| NULL | 08/01/2020 | hostN | grp3 |
| NULL | 07/01/2020 | hostO | grp3 |
+------------+------------+-------+-------+
每个group
由OrderDate
按descending
顺序排序。发布后,每个具有value
的{{1}}都需要标记为Current_date < (Date1 + 31Days) or Date1 as NULL
,直到valid
。
请注意,无论Current_date > (Date1 + 31Days)
的值如何,每个Value
都应标记为Invalid
。
如果对于Date1
,所有记录都是group
,则所有NULL
都应标记为Value
我的输出df应该如下所示:
Valid
我的方法:
我按+------------+------------+-------+-------+---------+
| Date1 | OrderDate | Value | group | Flag |
+------------+------------+-------+-------+---------+
| 10/10/2020 | 10/01/2020 | hostA | grp1 | Valid |
| 10/01/2020 | 09/30/2020 | hostB | grp1 | Valid |
| Null | 09/15/2020 | hostC | grp1 | Valid |
| 08/01/2020 | 08/30/2020 | hostD | grp1 | Invalid |
| Null | 10/01/2020 | hostP | grp2 | Valid |
| Null | 09/28/2020 | hostQ | grp2 | Valid |
| 07/11/2020 | 08/08/2020 | hostR | grp2 | Invalid |
| 07/01/2020 | 08/01/2020 | hostS | grp2 | Invalid |
| NULL | 07/01/2020 | hostL | grp2 | Invalid |
| NULL | 08/08/2020 | hostM | grp3 | Valid |
| NULL | 08/01/2020 | hostN | grp3 | Valid |
| NULL | 07/01/2020 | hostO | grp3 | Valid |
+------------+------------+-------+-------+---------+
订购后为每个row_number
创建了group
。
将我发布的OrderDate
的每个min(row_number)
都拥有Current_date > (Date1 + 31Days)
并将其保存为新的数据帧group
。
然后我将其与dfMin
上的df1
和dfMin
合并,并根据group
进行过滤
这种方法适用于大多数情况。但是,当对于row_number(row_number < min(row_number))
的所有group
的值为Date1
时,此方法将失败。
还有其他更好的方法来包含上述情况吗?
注意:我使用的是旧版本的Spark- NULL
。此外,Spark 1.5
函数在我的环境中不起作用(它是一个自定义框架,并且有很多限制)。对于windows
,我使用了row_number
方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)