數據可視化之PowerQuery篇(一)空值(null)運算的的解決思路


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

星友們在知識星球(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中將其更改為數值型哦。


免責聲明!

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



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