下面是附加的T-SQL代码。我尝试使用还附带的窗口函数将其转换为pyspark。
case
when eventaction = 'OUT' and lag(eventaction,1) over (PARTITION BY barcode order by barcode,eventdate,transactionid) <> 'IN'
then 'TYPE4'
else ''
end as TYPE_FLAG,
Pyspark代码使用窗口函数lag
给出错误
Tgt_df = Tgt_df.withColumn(
'TYPE_FLAG',
F.when(
(F.col('eventaction')=='OUT')
&(F.lag('eventaction',1).over(w).isNotIn(['IN'])),
"TYPE4"
).otherwise(''))
但是它不起作用。该怎么办!?
答案 0 :(得分:0)
这给您一个错误,因为没有isNotIn
列对象的方法。
如果您刚刚发布错误消息,那将是显而易见的...
请使用~
(而非)运算符。
&( ~ F.lag('eventaction',1).over(w).isin(['IN'])),
可用的方法列表在official documentation中。