平時經常被問到,如何把資料中最後一次交易記錄提取出來?比如每個客戶的最後一次下單記錄,或者每個產品最後一次賣出記錄等。
這個問題實現起來並不難,以這個簡易的訂單表為例:
如何將上表中每個客戶的最後一次購買記錄提取出來呢?
下面給出DAX和PowerQuery兩種做法。
DAX方法
可以在這個表裡新建一列,如果是最後一條記錄,返回“是”,計算列寫法如下:
最後下單記錄=
VAR
lastdealdate=
CALCULATE(
MAX(‘訂單表’[日期] ),
ALLEXCEPT(‘訂單表’,‘訂單表’[客戶])
)
RETURN
IF( [日期]=lastdealdate , “是” )
這個計算列的邏輯是,先找出每個客戶的最後一次下單日期,然後判斷每一行該客戶的訂單日期是否等於最後下單日期,如果等於,就返回“是”。
這樣就在訂單表中新增了一列最後記錄的標註,直接篩選就可以提取最後一次下單的記錄表。
當然還可以用DAX新建表,一次性把最後下單記錄提取出來。
邏輯是一樣的,只是把計算列的表示式直接寫在了計算表中。
PowerQuery方法
上面是用DAX來表達的,如果用PowerQuery應該怎麼處理呢?
非常簡單,只需要下面幾個步驟:
1、日期列按升序排列
2、反轉行
3、選中客戶列,右鍵>刪除重複項
即可得到每個客戶的最後一條記錄:
和前面DAX的處理結果一致。
PowerQuery方法要簡單的多,只需要點幾次滑鼠就行了,但是如果客戶在最後下單日期有多條記錄,並且還都需要保留,那麼用上面的PowerQuery方法就失效了,直接用DAX實現即可。
根據不同的業務場景選擇用最合適的方法。
並且資料更新後,上面兩種方法都可以自動顯示更新後資料的最後一條記錄。