Страницы: 1
RSS
Pq Замена последнее не пустое по столбцу на null
 
Доброго времени суток всем!
Есть запрос для массовой обработки файлов, написал код, который вполне себе работает.
Но со временем файлы будут добавляться.
Часть избыточного, как мне кажется, кода привел в примере.
Помогите сократить количество шагов
Благодарю
 
а можно поподробнее - не пустое по столбцу или по строке? строк всегда одна или могут быть варианты?
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, строка всегда одна - у меня это группировка по двум столбцам в общем коде

мне кажется я вроде встречал на форуме решение похожей задачи,
поиском что-то ничего пока найти не получилось,
поэтому решение наверно избыточное по кол-ву шагов, но рабочее
возможно кто-нибудь предложит более универсальное решение
 
del
Изменено: buchlotnik - 23.08.2021 15:19:56
Соблюдение правил форума не освобождает от модераторского произвола
 
Еще варик:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Replaced = Table.ReplaceValue(Source,0,0,(x,y,z)=>null,{Table.ColumnNames(Source){List.Count( List.RemoveLastN( Table.ToRows( Source ){0}, each _=null ) )-1}})
in
    Replaced
Изменено: PooHkrd - 25.02.2021 22:31:41
Вот горшок пустой, он предмет простой...
 
интересно по скорости (среднее по 1000 запусков):
Изменено: buchlotnik - 25.02.2021 22:57:17
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, я еще по решениям от Андрея VG обратил внимание, что работа с записями обычно дает самые быстрые результаты.
Вот горшок пустой, он предмет простой...
 
PooHkrd, так а ReplaceValue разве не построчно идёт? Для меня просто загадка, почему в скорости проигрывает
Соблюдение правил форума не освобождает от модераторского произвола
 
Ещё вариант:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    cols = Table.ColumnNames(Source),
    f = (l,n)=>List.RemoveLastN(l,n),
    x = Record.ToList(Source{0}),
    list = f(f(x, each _ = null),1),
    result = #table(cols,{}) & #table(List.FirstN(cols,List.Count(list)),{list})
in
    result

Возможно, с List.Buffer на шагах cols и list было бы чуток быстрее.

Изменено: Aleksei_Zhigulin - 26.02.2021 00:36:45
 
на 100 прогонах

Табличка в одну строку, буфер только память тратит похоже
Изменено: buchlotnik - 26.02.2021 07:24:23
Соблюдение правил форума не освобождает от модераторского произвола
 
Благодарю, всех за ваши варианты решения
Изучаю
Изменено: Mirdv - 26.02.2021 08:07:12
 
Доброе время суток.
А так, понатырив у вас коллеги.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    colNames = Table.ColumnNames(Source),
    row = Table.ToRows(Source){0},
    colId = List.PositionOf(row, null, Occurrence.Last, (s, c) => s <> c),
    transformList = {{colNames{colId}, (x) => null}},
    result = Table.TransformColumns(Source, transformList)
in
    result
Изменено: Андрей VG - 26.02.2021 08:14:42
 
Андрей, большое спасибо за код)
 
Mirdv, а другим участникам - спасибо - у них не код разве?!
 
Андрей, я ни про кого не забыл
пост #11
 
Цитата
Mirdv написал:
пост #11
Упс :(  Приношу свои извинения.
 
Цитата
Андрей VG написал:
А так
на 100 прогонах (комп не домашний, чутка медленнее):
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, в общем код от ТС на втором месте. Уделал нас всех как бог черепаху!  :D
Mirdv, как видите не всегда краткость кода полезна для скорости его выполнения. Так что не выпендривайтесь и слушайте вашу любимую песню Валенки! пользуйтесь своим кодом.  ;)
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
код от ТС на втором месте
ну да и при этом мой только
Цитата
buchlotnik написал:
чутка быстрее
и вообще собственноручно написанный он всегда понятнее и приятнее в обращении, ИМХО

ещё помучал комп на работе, ничего не поменялось, кроме абсолютных величин:
Изменено: buchlotnik - 26.02.2021 12:12:06
Соблюдение правил форума не освобождает от модераторского произвола
 
PooHkrd )))
Я померял время выполнения своего запроса
Сейчас пытаюсь прикрутить код от buchlotnik
просто интересно понять сколько времени выиграю на обработке 22 файлов
Познавательно это все, спасибо!
Страницы: 1
Наверх