在《Power Pivot Alchemy》Page17,作者提到可以在DAX中用LASTDATE獲取最新日期:
[LastRefreshed] = LASTDATE(Sales[TransactionDate])
其中的參數是一個日期列。我照貓畫虎,檢查公式沒有錯誤,但是拖到值區域,就出現如下提示:
LASTDATE運行時出錯
好吧,我知道怎么獲取唯一值,于是用了下面的公式:
=LASTDATE(DISTINCT('學習報表-系統'[完成時間]))
但是還是同樣的錯誤,那我再換:
=LASTDATE(VALUES('學習報表-系統'[完成時間]))
沒用,還是一樣的錯誤。
試試看用最傳統的MAX大法呢:
=MAX('學習報表-系統'[完成時間])
這次一次成功。
現在回頭來看錯誤提示,Excel告訴我是因為引用的日期列中有重復日期,但是我后來用DISTINCT和VALUES都去除重復了呀,這也不行?那我試試看新建一個沒有任何重復的日期列在來測試看。
測試數據:日期重復時間不重復
這個測試數據雖然沒有重復值,但是有重復日期,所以測試也是失敗的。
那我試試看日期也不重復呢:
測試數據:日期和時間都不重復
這次成功了,結果如下:
日期不重復測試成功
那日期不重復,時間重復呢?
測試數據:日期不重復時間重復
刷新,一切正常:
時間重復也沒關系
查閱微軟的官方說明,也并沒有明確指出LASTDATE這個函數要求引用的日期列不得有重復日期,但是在頁面末尾給出的例子中,還是暗示出了這個限制:
=LASTDATE('InternetSales_USD'[SaleDateKey])
這個SaleDateKey我理解就是日期表的主鍵,主鍵當然不能重復。
所以,結論是:
1.當要從日期重復的列中獲取最新日期,用MAX()函數;
2.當確定日期列中的日期是不重復的,則可以用LASTDATE()函數;
3.為什么有了MAX()函數之后,還要有LASTDATE()這個專門的函數呢?不得而知。