窗函数(滞后)实现和在pyspark中使用IsNotIn

问题描述 投票:-1回答:1

下面是附加的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,

使用窗口函数lag给出错误的Pyspark代码

Tgt_df = Tgt_df.withColumn(
    'TYPE_FLAG',
    F.when(
        (F.col('eventaction')=='OUT')
        &(F.lag('eventaction',1).over(w).isNotIn(['IN'])),
    "TYPE4"
).otherwise(''))  

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

tsql pyspark window pyspark-sql lag
1个回答
0
投票

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

相反,使用~(not)运算符。

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

可用方法列表在official documentation中。

© www.soinside.com 2019 - 2024. All rights reserved.