"Does Not Contain" 文本过滤器过滤过多

"Does Not Contain" text filter filters too much

通过使用 Power Query,我用大约 20 分钟的时间从地址字段创建了一个地址列表。 15000 个 excel 个文件。

我现在有一个包含 15143 行的列表,但我 运行 遇到 "Does Not Contain" 文本过滤器的问题。

我想在特定列中保留不包含搜索词 "foo" 的行。

当我第一次使用 "Contains" "foo" Text Filter it returns 150 行的列表

但是当我使用“包含”"foo"文本过滤器时,列表被缩短到只有 3218 行。

有点出乎意料的结果...

如果我没记错我的数学课是 15143-150=14993,而不是 3218。

这让我抓狂!

是我做错了什么还是微软的 Bug 再一次打击了我?

此行为与 null 的预期 Sql 逻辑相关:如果行字段为 null,则它不包含 "foo" 但它也不包含 "foo".换句话说,WHERE 过滤器会跳过计算结果为空的行,并且 not null 也为空。

您可以在 Power Query 中看到:

let
    Source = Table.FromColumns({{null, "foo", "bar"}}),
    FilteredRows = Table.SelectRows(Source, each 
        not Text.Contains([Column1], "foo") or Text.Contains([Column1], "foo"))
in
    FilteredRows

...只有 returns 最后两行。

在 Power Query 中,如果你想避免这种奇怪的逻辑,你可以用空字符串替换 null,然后你会得到更好的行为:

= Table.ReplaceValue(Source,null,"",Replacer.ReplaceValue,{"Column1"})