Удаление пустых строк (а на списках точно быстрее?)

#АнатомияФункций – List.RemoveMatchingItems, List.RemoveNulls, List.Repeat, Record.FromList



Всем привет!

В чате задали вопрос про удаление пустых строк, а именно: является ли мышкоклацный код слишком навороченным:

let

laiyuan = Excel.CurrentWorkbook(){[Name="biao"]}[Content],

jieguo = Table.SelectRows(laiyuan, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))

in

jieguo


Ответ – нет, вполне прозрачный и логичный код, достаточно универсальный.

Но вот если в таблице пустые строки содержат только null (а именно так было у автора вопроса), то действительно, можно и подсократить:

let

laiyuan = Excel.CurrentWorkbook(){[Name="biao"]}[Content],

jieguo = Table.SelectRows(laiyuan,(j)=>List.RemoveNulls(Record.ToList(j))<>{})

in

jieguo


А сократив, стоит задуматься о вычислительной эффективности и, например, переписать так:

let

laiyuan = Excel.CurrentWorkbook(){[Name="biao"]}[Content],

liebiao = List.Buffer(List.Repeat({null},Table.ColumnCount(laiyuan))),

jieguo = Table.SelectRows(laiyuan,(j)=> Record.ToList(j)<> liebiao)

in

jieguo


А ещё лучше так:

let

laiyuan = Excel.CurrentWorkbook(){[Name="biao"]}[Content],

jilu = Record.FromList(List.Repeat({null},Table.ColumnCount(laiyuan)),Table.ColumnNames(laiyuan)),

jieguo = Table.SelectRows(laiyuan,(j)=>j<>jilu)

in

jieguo


Ну а насколько лучше получился код и вообще, что тут к чему смотрите , как всегда, на Ютубе



Лайк, коммент, подписка приветствуются )))



Надеюсь, было полезно.

Всех благ!

@buchlotnik