PowerQuery:空值運算的的解決思路
星友們在知識星球(PowerBI星球)提出的問題中,關於空值的運算經常被提及。平時接觸到的源數據常常有空值,比如Excel數據中的空白單元格,powerquery中會顯示為null,大多數時候,我們並不能簡單粗暴的刪除其中的空值,而是需要在PQ中對數據進一步運算整理。
如果對空值直接進行運算,得到的還是空值,這可能並不是我們期望的結果,那麼本文就提供一個空值運算的思路。
假設數據如下,
首先測試一下PowerQuery中null的運算結果,比如兩列相加,直接用「 」,新建列,
結果如下:
null 數字=null
null參與運算的結果也都成了null。
這是因為在PowerQuery運算中:null 數字=null
那麼如何能讓null 數字=數字呢,可能大家想到的一個辦法是null使用0來替換,這樣確實能得到正確的結果。
但是null畢竟和0是有差別的,假設都替換為0,然後又出現兩列相乘的需求,是不是又悲劇了:(
下面就說一個不用替換的方法:使用List類函數。
依然以兩列相加為例,相加用List.Sum函數,
結果如下,
null 數字=數字
這樣的結果是不是就舒服多了!
這樣就做到了:null 數字=數字,從這個運算結果來看,null在List.Sum運算中默認為0。
那如果相乘呢,可以使用List.Product函數,
null*數字=數字
在這個乘法運算中,null*數字=數字,null在其中又相當於是1啦。
我們還可以進一步測試最大值和最小值,其結果如下:
List.Max(null,數字)=數字
List.Min(null,數字)=數字
是不是感覺很奇怪?
其實無論null和數字進行何種運算,其結果都是數字,null就像壓根不存在一樣,不參與數字運算,把它當成真空就好。
所以在List類函數的運算中,null才是真正實現了做自己,無論與數字怎麼運算,最終的結果都是數字。
總結
以加法為例(其他類型的運算與加法類似):
如果你想要的結果是null 數字=null,直接使用運算符號" ";
如果你想要的結果是null 數字=數字,使用List.Sum函數;
最後友情提醒,List運算的結果上載到數據模型後默認為文本型,所以上載前請先在PowerQuery中將其更改為數值型哦。


※這些Power BI的動態技巧,你應該掌握
※深入了解Power BI的跨頁鑽取功能
TAG:PowerBI星球 |