我有一个包含事件数据的表,这些数据与客户相关并按时间顺序显示。相关字段是EventID(唯一键),CustomerID(每个客户唯一),EventType和EventDate。
我现在想添加一个计算列,显示某个事件是否发生在另一个事件之后。比如说,如果在“购买”类型的事件之后,在第一个事件之后发生的同一个customerID也发生了类型为“已收到付款”的事件(根据EventDate)。
在Excel中,我现在设置了一个vlookup,但据我所知,PowerPivot中没有这样的功能。我也尝试拆分表以通过RELATED()
获取相关事件,但由于结果关系是多对多的,我从PowerPivot收到错误。
有没有办法在PowerPivot中执行此操作? (如果可以解决问题,我也可以事先处理Power Query中的数据。)
编辑:我找到了一个涉及SQL问题的解决方案。我仍然对PowerPivot中的解决方案感兴趣,但是,如果可能的话。答案 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
过滤掉,以防止我意外地将付款活动分类到比预期更早的购买时间