zoukankan      html  css  js  c++  java
  • 数据可视化之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中将其更改为数值型哦。

  • 相关阅读:
    有关WCSF的几点整理
    应用Response.Write实现带有进度条的多文件上传
    使用Response.Write实现在页面的生命周期中前后台的交互
    多线程实现Thread.Start()与ThreadPool.QueueUserWorkItem两种方式对比
    LinQ to SQL 及 non-LinQ方式实现Group的Performance对比
    Object.assign()方法
    继承
    面对对象和原型链
    画布实现验证码
    日期的格式 字符串转日期
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12842990.html
Copyright © 2011-2022 走看看