利用EARLIER做以下幾種分析:
01 | 求兩個(gè)訂單的時(shí)間間隔
相當(dāng)于用下一個(gè)訂單的日期減去當(dāng)前訂單的日期,為了相減的方便,新建列[下個(gè)訂單日期],先把下一行的訂單日期提取過來,輸入DAX公式:
= SUMX(FILTER('訂單表','訂單表'[序號(hào)]=
EARLIER('訂單表'[序號(hào)])+1),
'訂單表'[訂單日期])
這個(gè)公式的意思是,利用EARLIER獲取當(dāng)前行的序號(hào),然后找到當(dāng)前序號(hào)+1的那一行的訂單日期,結(jié)果如下,
然后新建一列,用兩列日期相減得到間隔的天數(shù),
間隔 = IF([下個(gè)訂單日期]=BLANK(),
BLANK(),
[下個(gè)訂單日期].[日]-[訂單日期].[日])
這里用IF判斷主要因?yàn)樽詈笠涣袨榭罩?,避免出現(xiàn)不合理的數(shù)值,
02 | 求每個(gè)訂單日期的累計(jì)銷售金額
新建列[累計(jì)銷售額],
= SUMX (FILTER('訂單表','訂單表'[序號(hào)]<=EARLIER('訂單表'[序號(hào)])),
'訂單表'[銷售金額])
利用EARLIER求當(dāng)前行的序號(hào),然后把小于等于當(dāng)前序號(hào)的所有行的銷售額累加。
03 | 求截至目前訂單,每種產(chǎn)品的銷量
新建列[產(chǎn)品累計(jì)銷量],
= SUMX(FILTER(
'訂單表','訂單表'[序號(hào)]<=EARLIER('訂單表'[序號(hào)])
&&'訂單表'[產(chǎn)品名稱]=EARLIER('訂單表'[產(chǎn)品名稱])),
'訂單表'[銷售數(shù)量])
不僅利用EARLIER篩選小于當(dāng)前行的序號(hào),還利用它求得當(dāng)前行的產(chǎn)品名稱,然后同時(shí)符合這兩個(gè)條件的銷量才累加,結(jié)果正是我們期望的,
以上幾個(gè)實(shí)例都是先獲得本行的記錄,然后做各種聚合預(yù)算,本行的記錄可以稱為行上下文,EARLIER函數(shù)正是獲取行上下文的最好工具之一。