跟Excel里不一样,PQ空文本筛选不出来,为什么?

- 1 -

很多时候,数据里面会带一些空的内容,这时候,在做数据筛选的时候就要小心,因为空的内容在不同的情况下,它的处理(或计算)逻辑可能不太一样。

比如,现在在Excel里有这么一份数据,某个列里面有些空的内容:

这时候,如果要对这一列内容进行不包含“Power”内容的筛选:

你会看到,筛选出来的结果里包含了这项空的内容:

但是,如果是在Power Query里,你进行同样的筛选:

筛选条件仍然是不包含“Power”:

你会发现,得到的结果里面, 并不包括那个空的内容:

同时,我们看到生成的步骤公式里面,判断的条件是:not Text.Contains([姓名],"Power")。

既然不包含里没有,那包含里面是不是该有呢?我们把筛选条件从“不包含”改为“包含”:

得到的结果里面,仍然没有那个空的内容!

- 2 -

“不包含”里没有,“包含”里也没有,那到底算啥?

为什么?为什么?为什么?

从上面生成的筛选步骤的公式来看,我们知道,其中的关键在于筛选的条件:Text.Contains([姓名],"Power")。

既然这样,我们就可以直接对这些内容进行判断,看看其中到底发生了什么事。

在初始的内容(删除前面做的筛选步骤)基础上,添加“自定义列”,输入自定义列公式:

结果,对于空 (null) 的值,Text.Contains得到的结果是空 (null):

再添加个自定义列,加上not,即相当于做不包含筛选时的条件:not Text.Contains([姓名],"Power")

结果,对于空 (null) 的值,Text.Contains得到的结果仍然是空 (null)!

就是因为无论是包含还是不包含,判断条件的结果都是null,所以,筛选的结果里都不包含这个空内容 (null) 。

- 3 -

把问题搞清楚,解决起来就容易了。

既然问题出在null身上,我们就可以采用以下两种方法来进行处理。

1、增加筛选条件“或等于null”,即筛选的时候把带空的内容也筛选出来

2、把null替换为文本的空("")再做筛选,永远要记得,null和""是不一样的。

- 4 -

关于空值(null)的处理,我从多个大家常见的问题出发,写过了多篇文章,其中有Power Query的:

也有关于Power Pivot的:

实际上,很多不同的软件工具、编程语言等,对null值的处理方式都可能不太一样,甚至,很多软件的bug,也是因为对null值的处理不当也引起的,因此,最重要的是,学会在碰到空值的时候,怎么找到其对应的处理逻辑

所以,为尽可能避免大家在后续学习使用过程中再走类似的弯路,我专门录制了一集关于空值处理的内容,发布如下,供大家快速学习、参考:

(0)

相关推荐