按时间顺序获取表格中的下一个条目

时间:2017-09-18 20:50:00

标签: excel powerpivot dax excel-2016

我有一个包含事件数据的表,这些数据与客户相关并按时间顺序显示。相关字段是EventID(唯一键),CustomerID(每个客户唯一),EventType和EventDate。

我现在想添加一个计算列,显示某个事件是否发生在另一个事件之后。比如说,如果在“购买”类型的事件之后,在第一个事件之后发生的同一个customerID也发生了类型为“已收到付款”的事件(根据EventDate)。

在Excel中,我现在设置了一个vlookup,但据我所知,PowerPivot中没有这样的功能。我也尝试拆分表以通过RELATED()获取相关事件,但由于结果关系是多对多的,我从PowerPivot收到错误。

有没有办法在PowerPivot中执行此操作? (如果可以解决问题,我也可以事先处理Power Query中的数据。)

编辑:我找到了一个涉及SQL问题的解决方案。我仍然对PowerPivot中的解决方案感兴趣,但是,如果可能的话。

1 个答案:

答案 0 :(得分:0)

一种解决方案,涉及在通过SQL加载数据时对其进行转换。

SELECT TOP 1 WITH TIES ev.*
    ,results.EventType
    ,results.EventDate
  FROM CustomerEvents ev
  LEFT JOIN (SELECT CustomerID
      EventType
      EventDate
      FROM CustomerEvents
      WHERE EventType = 'Payment received' or EV_EventCode = 'Payment not received') as payments
   ON payments.CustomerID = ev.CustomerID
   AND payments.EventDate > ev.EventDate 
   WHERE EventType = 'Purchase'
   ORDER BY ROW_NUMBER() over (PARTITION BY EventID ORDER BY payments.EventDate ASC)

Order By payments.EventDate Asc因此我在购买活动结束后获得最早的活动日期,然后通过TOP 1过滤掉,以防止我意外地将付款活动分类到比预期更早的购买时间