从数据到信息
从信息到洞察

PowerQuery 的”不”筛选是不是Bug?

一位朋友在群里问,PowerQuery不包含筛选在判断空值的时候是不是有bug
PowerQuery 的
聊天记录

用两行数据模拟一下这个问题
PowerQuery 的
现在我们对value列设置一个筛选条件,不包含q,看看返回什么结果
PowerQuery 的
最终结果,只返回了一行,空值被排除了。
难道空值里藏了q?显然不可能
PowerQuery 的
搜索条件换成包含q再试试,这回结果正确了。
PowerQuery 的
实际上,带”不”的筛选条件中,凡是用函数表达式进行判断的,空值都被排除了。(”不等于”用的是逻辑判断符)
PowerQuery 的
为什么会出现这种情况,我们回来看一下这些函数的怎么定义的

Text.StartsWith(string as nullable text, substring as text, optional comparer as nullable function) as nullable logical
Text.Contains(string as nullable text, substring as text, optional comparer as nullable function) as nullable logical  
最后都有一句 as nullable logical  ,说明他们都可以返回空值。当输入空值的时候,这些函数也返回空值。新建一列模拟这个过程,可以看到null依然返回null,而只有True才会被保留,这就解释了最终的结果。
所以,当你要在包含空值的文本列使用带不的筛选时,要么先将null替换为””,要么把判断逻辑修改为

each (not Text.Contains([value], “q”)) or [value] is null)

原创内容 转载请联系作者授权:PowerBI极客 » PowerQuery 的”不”筛选是不是Bug?

说点什么

1000
  
smilegrinwinkmrgreenneutraltwistedarrowshockunamusedcooleviloopsrazzrollcryeeklolmadsadexclamationquestionideahmmbegwhewchucklesillyenvyshutmouth
  订阅本文评论  
提醒