平时经常被问到,如何把数据中最后一次交易记录提取出来?比如每个客户的最后一次下单记录,或者每个产品最后一次卖出记录等。
这个问题实现起来并不难,以这个简易的订单表为例:
如何将上表中每个客户的最后一次购买记录提取出来呢?
下面给出DAX和PowerQuery两种做法。
DAX方法
可以在这个表里新建一列,如果是最后一条记录,返回“是”,计算列写法如下:
最后下单记录=
VARlastdealdate=
CALCULATE(
MAX('订单表'[日期] ),
ALLEXCEPT('订单表','订单表'[客户])
)
RETURN
IF( [日期]=lastdealdate , "是" )
这个计算列的逻辑是,先找出每个客户的最后一次下单日期,然后判断每一行该客户的订单日期是否等于最后下单日期,如果等于,就返回“是”。
这样就在订单表中新增了一列最后记录的标注,直接筛选就可以提取最后一次下单的记录表。
当然还可以用DAX新建表,一次性把最后下单记录提取出来。
逻辑是一样的,只是把计算列的表达式直接写在了计算表中。
PowerQuery方法
上面是用DAX来表达的,如果用PowerQuery应该怎么处理呢?
非常简单,只需要下面几个步骤:
1、日期列按升序排列
2、反转行
3、选中客户列,右键>删除重复项
即可得到每个客户的最后一条记录:
和前面DAX的处理结果一致。
PowerQuery方法要简单的多,只需要点几次鼠标就行了,但是如果客户在最后下单日期有多条记录,并且还都需要保留,那么用上面的PowerQuery方法就失效了,直接用DAX实现即可。
根据不同的业务场景选择用最合适的方法。
并且数据更新后,上面两种方法都可以自动显示更新后数据的最后一条记录。
领取专属 10元无门槛券
私享最新 技术干货