【发布时间】:2022-10-23 09:38:55
【问题描述】:
我正在尝试编写一个代码(spark-sql),将分区数据分类为 ST。
基本上,目标是结束另一列Open ST,它将仅显示打开的 ST(打开的 ST 由在 ST 之后的任何地方都没有任务 RW 来确定)。
最终目标:
所以在这种情况下 item12346 将以 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
希望通过查看我提供的表格有一个更简单的解决方案。谢谢!
【问题讨论】:
-
你能接受答案吗?我确信这是正确的。
标签: apache-spark-sql