2017-06-19 106 views
0

我正在對3列37,636行的源表運行以下查詢,並且需要花費數小時才能運行。我該如何提高性能?如何提高查詢性能?

源表本身就是先行查詢的結果,以防萬一。先例查詢在合理的時間內(以分鐘爲單位)執行,但是這種情況糟糕透頂。

源表的列名稱是Columns,Columns2和Count。

let 
Source = Table.Buffer(GetWordCounts), 
#"Grouped Rows" = Table.Buffer(Table.Group(Source, {"Count"}, {{"AllData", each _, type table}})), 
Custom1 = Table.Buffer(Table.MaxN(#"Grouped Rows","Count",10)), 
#"Expanded AllData" = Table.ExpandTableColumn(Custom1, "AllData", {"Columns", "Columns2"}, {"Columns", "Columns2"}) 
in 
#"Expanded AllData" 

我試着在一些地方增加Table.Buffer,正如你所看到的,但如果它是幫助或傷害我不能告訴。

任何想法?

回答

1

使用Excel中的相同數量的測試數據,它會在大約2秒內與我一起運行。如果您在單獨的Excel工作簿或pbix文件中隔離此查詢的輸入,是否仍然具有相同的不良性能?我懷疑表現糟糕是由於之前的步驟。

編輯:替代碼你可以給一個嘗試:

let 
    Source = Table.Buffer(GetWordCounts), 
    #"Removed Duplicates" = Table.Distinct(Source, {"Count"})[Count], 
    Max10 = List.Sort(#"Removed Duplicates",Order.Descending){9}, 
    #"Filtered Rows" = Table.SelectRows(Source, each [Count] >= Max10) 
in 
    #"Filtered Rows" 
+0

感謝@MarcelBeug。我在Excel中嘗試了原始查詢的獨立運行,並且像您一樣,我看到了一個非常快速的結果。因此,我開始逐步完成先例查詢,並且我_think_我可能已經發現了這個問題......但我不知道爲什麼它是一個問題或者如何解決它。它必須與你提供給我的這個早期的解決方案:[鏈接](https://stackoverflow.com/questions/44395636/compare-each-columns-contents-with-all-other-columns-contents-and-present- MATR/44402603#44402603)。看起來事情在'Tabled = Table.FromColumns({ColumnNames},type table [Columns = text]),'。 –

+0

就像在黑暗中拍攝一樣,我沒有選中「允許在後臺下載數據預覽」和「啓用並行加載表格」,它似乎讓事情變得更快,直到原來的麻煩點... #「分組行」(或替代方案中的#「刪除重複項」)。它需要不到2分鐘的時間才能通過Tabled,但它在#「分組行」(或#「Removed Duplicates」)中陷入困境,這需要花費數小時。現在我想這意味着Tabled可能不是問題的一部分畢竟,我真的很難過。 –