删除连续的重复行bigquery

Removing consecutive duplicate rows bigquery

我有一些 event 分组到 sessions 中的数据。在某些情况下,我想删除那些会话中的连续重复事件。在 bigquery 中有没有办法做到这一点?

例如

初始table:

session   eventType   eventOrder
1         a           1
1         a           2     
1         b           3
2         b           1
2         a           2
2         b           3     

想要的结果:

session   eventType   eventOrder
1         a           1
1         b           3
2         b           1
2         a           2
2         b           3    

您可以使用 lag()。这个想法是将当前事件类型与同一会话的先前值进行比较,并消除它们匹配的记录:

select session, eventType, eventOrder
from (
    select 
        t.*,
        lag(eventType) over(partition by session order by eventOrder) lag_eventType
    from mytable t
) t
where lag_eventType is null or eventType != lag_eventType