Страницы: 1
RSS
Pq столбец по условию. Вытянуть значение из предыдущей строки
 
Здравствуйте.
Подскажите как в PQ сделать условный столбец "z":
если строка а содержит значение "с", то берем тот же значение( это мне понятно), а если  содержит 2020,то берем значение из верхней строки столбца "z".
В excel элементарно,а как в pq сделать не понимаю.(  
 
Добрый!
можно так:
Код
else Table.ToColumns(a){1}{0}

где a= пред шаг (таблица)
{1} = номер столбца от 0
{0} = самый первый элемент списка = значение из верхней строки столбца
 
Цитата
Alennka написал:
В excel элементарно,а как в pq
а в pq   совершенно другой принцип работы с данными 😀 пример будет?
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Alennka написал:
берем значение из верхней строки столбца "z".
так из верхней или из предыдущей? Если из предыдущей: Как в PowerQuery обратиться к предыдущей строке
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Доброе время суток
Дмитрий(The_Prist) Щербаков, ну зачем же учить пользователей дурному, дико тормозному подходу - лишь бы это было похоже на то, как это делает он в Excel?
 
Антон, вы такой подход хотя бы на 10к строк пробовали применять? Скорость устраивает?
Вот горшок пустой, он предмет простой...
 
PooHkrd, нет, я бы решил это через допстолбец или еще как-нибудь
PooHkrd, если не трудно, покажите, плиз, более быстрый вариант
 
Их тут предлагалось на форуме более чем достаточно и от меня и от Андрей VG. Был бы пример от ТС, показать то не сложно.
Вот горшок пустой, он предмет простой...
 
Алексей, можно воспользоваться примером Дмитрия, по ссылке. Надеюсь, не осудит.
 
Андрей VG, фигасе вы там прям заморочились. Аж с сохранением типов и вот этим вот всем! Красиво, я как-то проще привык.
Вот горшок пустой, он предмет простой...
 
del
Изменено: buchlotnik - 23.08.2021 17:46:17
Соблюдение правил форума не освобождает от модераторского произвола
 
Привет, Михаил.
Ну, Table.ReplaceValue я бы не советовал, по скорости добавить и удалить быстрее, чем эта функция.
 
del
Изменено: buchlotnik - 23.08.2021 17:46:07
Соблюдение правил форума не освобождает от модераторского произвола
 
спасибо, коллеги, поковыряюсь
 
Михаил, большое спасибо за исследование. С записями Power Query ведёт себя порой странно. Алексей в прошлом году как-то показывал, что выгоднее получается завернуть запись в таблицу, чтобы потом при развёртывании столбца использовать Table.ExpandTableColumn вместо Table.ExpandRecordColumn, ибо быстрее. Почему - загадка :)
 
ну раз уж исследуем, и учитывая
Цитата
Андрей VG написал:
дико тормозному подходу
приведу в числах:
выборка 400:
List.Transform - 0,064 с
Table.AddColumn - 0,066 с
Table.ReplaceValue - 0,075 с
Индекс{i} - 0,588 с

выборка 10к:
List.Transform - 0,306 с
Table.AddColumn - 0,327 с
Table.ReplaceValue - 0,434 с
Индекс{i} - 159,222 с

выборка 100к:
List.Transform - 2,356 с
Table.AddColumn - 2,578 с
Table.ReplaceValue - 3,684 с
Индекс{i} - не стал тестировать с учётом результатов по малой выборке
Изменено: buchlotnik - 29.11.2020 00:09:29
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, я тоже решил посчитать, у меня выборка на 500к
List.Transform ~ 3 с
Table.ReplaceValue ~ 4 с
Table.AddColumn ~ 9 с
Индекс - ограничил 1000 строками (на более большой таблице - ну очень долго)
кстати время измерял прям в самом pq
ссылка - файл (32М)
причем интересно, что время выполнения запроса в редакторе pq и время выполнения запроса на листе разнятся
 
Цитата
Антон написал:
время измерял прям в самом pq
это как? увидел - похоже вы забыли, что М - функциональный язык - корректность подобных замеров весьма сомнительна
Цитата
Антон написал:
время выполнения запроса в редакторе pq и время выполнения запроса на листе разнятся
так в редакторе обновляется только предварительный просмотр

на вашем объеме данных:
List - 8,447
Add - 10,655
Replace - 14,942
Изменено: buchlotnik - 29.11.2020 01:20:07
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
похоже вы забыли, что М - функциональный язык
нет, я это помню.
замеры делал на основании вот этой - статьи
но соглашусь, что замеры сомнительны...
да, и самое главное - вывод - работаем с List, т.к. он самый быстрый?
Изменено: Антон - 29.11.2020 01:31:41
 
Цитата
Антон написал:
т.к. он самый быстрый?
самый быстрый в данном конкретном случае. задачи бывают разные, я бы так категорично не обобщал
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
   lst = List.Zip({cols{1},{null}&List.RemoveLastN(cols{1},1)}),  
   din=List.Transform(lst, each if _{1}>_{0} then ...
Спасибо!
Страницы: 1
Наверх