數據可視化之DAX篇(四) 熟練使用EARLIER函數,輕松獲取當前行信息


https://zhuanlan.zhihu.com/p/64400583

前面利用PowerBI做數據分析的時候都是對整列的字段進行操作,並沒有做更細化的分析,比如分析數據的每一行、提取某一行的數據,這在Excel中很容易實現,因為Excel公式是對單元格操作。那么在PowerBI中能不能按行分析呢,答案當然是肯定的,並且比Excel更加靈活,借助這個函數:EARLIER

.

EARLIER語法

 

EARLIER(<column>, <number>)
  • 第一個參數是列名
  • 第二個參數一般可省略
  • EARLIER函數提取本行對應的該列的值,實際上就是提取本行和參數列交叉的單元格

這個函數是指定行上下文重要工具,下面靠幾個實例來理解這個函數。

 

EARLIER應用實例

 

有一張訂單表:

 

 

利用EARLIER做以下幾種分析:

01 | 求兩個訂單的時間間隔

相當於用下一個訂單的日期減去當前訂單的日期,為了相減的方便,新建列[下個訂單日期],先把下一行的訂單日期提取過來,輸入DAX公式:

 

= SUMX(FILTER('訂單表','訂單表'[序號]=
EARLIER('訂單表'[序號])+1),
'訂單表'[訂單日期])

 

這個公式的意思是,利用EARLIER獲取當前行的序號,然后找到當前序號+1的那一行的訂單日期,結果如下,

 

然后新建一列,用兩列日期相減得到間隔的天數,

 

間隔 = IF([下個訂單日期]=BLANK(),
BLANK(),
[下個訂單日期]-[訂單日期])

 

這里用IF判斷主要因為最后一列為空值,避免出現不合理的數值,

 

 

 

02 | 求每個訂單日期的累計銷售金額

 

新建列[累計銷售額],

= SUMX (FILTER('訂單表','訂單表'[序號]<=EARLIER('訂單表'[序號])),
'訂單表'[銷售金額])

 

 

 

 

利用EARLIER求當前行的序號,然后把小於等於當前序號的所有行的銷售額累加。

 

03 | 求截至目前訂單,每種產品的銷量

 

新建列[產品累計銷量],

 

= SUMX(FILTER(
'訂單表','訂單表'[序號]<=EARLIER('訂單表'[序號])
&&'訂單表'[產品名稱]=EARLIER('訂單表'[產品名稱])),
'訂單表'[銷售數量])

 

不僅利用EARLIER篩選小於當前行的序號,還利用它求得當前行的產品名稱,然后同時符合這兩個條件的銷量才累加,結果正是我們期望的,

 

 

以上幾個實例都是先獲得本行的記錄,然后做各種聚合預算,本行的記錄可以稱為行上下文,EARLIER函數正是獲取行上下文的最好工具之一。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM