星友们在知识星球(PowerBI星球)提出的问题中,关于空值的运算经常被提及。平时接触到的源数据常常有空值,比如Excel数据中的空白单元格,powerquery中会显示为null,大多数时候,我们并不能简单粗暴的删除其中的空值,而是需要在PQ中对数据进一步运算整理。
如果对空值直接进行运算,得到的还是空值,这可能并不是我们期望的结果,那么本文就提供一个空值运算的思路。
假设数据如下,
![39256a207f486faeaf82bd2c77e2080b.png](https://i-blog.csdnimg.cn/blog_migrate/9652a583c202576e36bebdf0bf148aef.jpeg)
首先测试一下PowerQuery中null的运算结果,比如两列相加,直接用“+”,新建列,
![e3102bb4f002318f494a55bc45b92e10.png](https://i-blog.csdnimg.cn/blog_migrate/8f01f2e7ef7fe3668e72c03a3262fc95.jpeg)
结果如下:
![5beb177918da7334421658d9984feab1.png](https://i-blog.csdnimg.cn/blog_migrate/c797ac04b2d3712e32b6fe2196fa55a0.png)
null+数字=null
null参与运算的结果也都成了null。
这是因为在PowerQuery运算中:null+数字=null
那么如何能让null+数字=数字呢,可能大家想到的一个办法是null使用0来替换,这样确实能得到正确的结果。
但是null毕竟和0是有差别的,假设都替换为0,然后又出现两列相乘的需求,是不是又悲剧了:(
下面就说一个不用替换的方法:使用List类函数。
依然以两列相加为例,相加用List.Sum函数,
![fd9bd8d05e7785bf575b30e483fd4ed8.png](https://i-blog.csdnimg.cn/blog_migrate/b457b0c0c7513cb4730d5a894f9eefbf.jpeg)
结果如下,
![3e39226195f450ca09f9d61c979c1839.png](https://i-blog.csdnimg.cn/blog_migrate/ecd29862bd450a5f75e3797516739bbb.png)
null+数字=数字
这样的结果是不是就舒服多了!
这样就做到了:null+数字=数字,从这个运算结果来看,null在List.Sum运算中默认为0。
那如果相乘呢,可以使用List.Product函数,
![252277b711f005fa822df35599472b4e.png](https://i-blog.csdnimg.cn/blog_migrate/b5d139578951f1d159aceedeebe4e19c.jpeg)
null*数字=数字
在这个乘法运算中,null*数字=数字,null在其中又相当于是1啦。
我们还可以进一步测试最大值和最小值,其结果如下:
List.Max(null,数字)=数字
List.Min(null,数字)=数字
是不是感觉很奇怪?
其实无论null和数字进行何种运算,其结果都是数字,null就像压根不存在一样,不参与数字运算,把它当成真空就好。
所以在List类函数的运算中,null才是真正实现了做自己,无论与数字怎么运算,最终的结果都是数字。
总结
以加法为例(其他类型的运算与加法类似):
如果你想要的结果是null+数字=null,直接使用运算符号"+";
如果你想要的结果是null+数字=数字,使用List.Sum函数;
最后友情提醒,List运算的结果上载到数据模型后默认为文本型,所以上载前请先在PowerQuery中将其更改为数值型哦。
-精彩推荐-
采悟:干货合辑 | 最全的PowerBI教程,都在这里了zhuanlan.zhihu.com![fc793d6b6b96b4e38c76fcab50858f8f.png](https://i-blog.csdnimg.cn/blog_migrate/c486750290c19cb6fe55f5094991f498.jpeg)
![074c4fdd7cc39c257b8d9bae02f9806c.png](https://i-blog.csdnimg.cn/blog_migrate/8f0c27ae371fc7db6f26f4ef566118fe.jpeg)
![be794f0ff51a88670ecdc38f07c22331.png](https://i-blog.csdnimg.cn/blog_migrate/06510402e6cecd1c350eddba062f0f9b.jpeg)
学习Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。
看完别忘了点个赞哦。