我正在尝试编写一个代码(spark-sql),将分区数据分类为ST。
基本上,目标是以另一列Open ST
结束,该列将仅显示打开ST(打开ST是由ST之后的任何位置都没有任务RW确定的)。
最终目标:
因此,在本例中,12346
项将以ST结束,因为在任务ST之后没有任务RW。项目12345
不会是开放ST,因为RW存在于ST之后的某个位置。
正如您所看到的,其他任务可以在ST之后出现,但这并不一定相关,因为我关心的是任务ST和RW。
任何想法,我可以如何编码这个。为了实现完全透明,我已经创建了基于分区的其他列,如NextTask
,Lag和Lastvalue
,我使用了一个CASE WHEN
子句,但我认为它们可能会使我的事情复杂化:
CASE WHEN code_task = 'ST' AND lastvalue = 'CR' AND Lag_ NOT LIKE '%RW'AND Next_Task NOT LIKE '%RW%' THEN 'ST' END AS Open ST
希望能有一个简单的解决方案,只要看看我提供的表格。谢谢你!
1条答案
按热度按时间tkclm6bt1#
问题是不清楚的数据方面,这里是一个方法的基础上作出的一些假设。不,不是用case,而是用另一种方式。
编码
结果