窗口函数(滞后)的实现以及pyspark中IsNotIn的使用

时间:2019-02-21 10:09:07

标签: tsql pyspark window pyspark-sql lag

下面是附加的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(''))  

但是它不起作用。该怎么办!?

1 个答案:

答案 0 :(得分:0)

这给您一个错误,因为没有isNotIn列对象的方法。 如果您刚刚发布错误消息,那将是显而易见的...

请使用~(而非)运算符。

&( ~ F.lag('eventaction',1).over(w).isin(['IN'])),

可用的方法列表在official documentation中。