2017-03-07 119 views
1

通過使用Power Query,我從地址字段中創建了一個地址列表, 15000個獨立的excel文件。「不包含」文本過濾器過濾器太多

我現在有一個列表15143行,但我遇到了「不包含」文本過濾器的問題。

我想保留在特定列中不包含搜索詞「foo」的行。

當我第一次使用「包含」「富」文本過濾器返回的150行

但列表時,我使用了「無法加含有」「富」內容過濾器,而不是名單被縮短只有3218行。

有點出乎意料的結果...

如果我還記得我的數學課正確15143-150 = 14993,而不是3218

這是推動我瘋了!

難道我做錯事或者是全能微軟的Bug已經打我,再一次?

+1

我敢打賭,你過濾柱有很多的空白,並且「不包含」過濾器排除這些。你可以做標識(C:C,「」)(或者你的列是什麼),看看有多少個單元格是空白的? –

+0

謝謝@WillJobs!你真是太棒了! 11775的細胞是空白的! – MrDark

+0

我首先提取使用PQ列表並將其保存爲一個單獨的excel文件解決了這個問題。然後,我將該文件作爲PQ數據源添加到新文檔中,並從那裏進行了其餘的過濾和處理。然後,我能夠做到所需的「不包含」過濾沒有問題。你知道爲什麼工作時,它在第一種方式沒有工作? @WillJobs? – MrDark

回答

1

此行爲與爲空預期的SQL邏輯:如果行字段爲空,它不包含「富」,但它也不會不包含「富」。換言之,WHERE過濾器會跳過評估爲空的行,並且not null也爲空。

您可以在電源查詢看到:

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

...只是返回的最後兩行。

在電源查詢,如果你想避免這種離奇的一種邏輯的,你可以用空字符串替換空,然後你會得到更好的行爲:

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

有道理!感謝@carl爲你解釋這個看似奇怪的行爲。 – MrDark