Страницы: 1
RSS
PQ Оставить строки с наибольшей датой
 
Добрый день, друзья.
Прошу подсказать, как в PQ по ключу оставить строки только с максимальной датой.
Есть таблица с повторяющимися значениями (ключ), в столбце "Акция Id" может быть сколько угодно номеров, нужно оставить только ту акцию (строку), в которой дата акции самая актуальная - столбец "Дата2" (имеет наибольшее значение). Как получить "Таблица 2"?
Подробно описал в примере.
Заранее большое спасибо.
Изменено: OblivionR - 02.12.2019 12:08:15
 
Так?

Код запроса:
Скрытый текст
Изменено: Xat - 02.12.2019 12:03:15
 
Xat, увы, но нет. Дело в том что простым фильтром тут не обойтись, т.к. таких строк может быть очень много. Сколько ключей - столько и макс значений. Пример поправил немного, чтобы наверняка.
 
Возможно поможет. Пока не понимаю конечной цели. Обновил файл!
Изменено: Xat - 02.12.2019 12:18:02 (Обновил файл!)
 
Xat, заполнение вниз здесь тоже не очень хорошее решение, т.к. данные могут идти хаотично.
 
OblivionR,Какая логика расстановки данных в исх. таблице?  
 
Xat, логика так сказать хаотичная, искать максимальное значение нужно именно по ключу. Ключ это "сцепка" первых 4 столбцов.
 
OblivionR, По Вашей логике.
Изменено: Xat - 02.12.2019 12:29:50
 
Можно так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="gogo4"]}[Content],
    ChangedType = Table.TransformColumnTypes(Source,{{"Дата", type date}, {"Контрагент id", type text}, {"Название контрагента", type text}, 
        {"Артикул", type text}, {"Продажи", Int64.Type}, {"Сумма продаж", Int64.Type}, {"Сумма продаж со скидкой", Int64.Type}, 
        {"Счет", Int64.Type}, {"Акция id", Int64.Type}, {"Скидка %", Int64.Type}, {"Дата2", type date}}),
    GroupedRows = Table.Group(ChangedType, {"Дата", "Контрагент id", "Название контрагента", "Артикул"}, {{"таб", each Table.Max( _, "Дата2" ), type table}}),
    Result = Table.FromRecords( GroupedRows[таб] )
in
    Result
Вот горшок пустой, он предмет простой...
 
Xat, спасибо за идею группировки для извлечения макс значения
PooHkrd,
Код
 GroupedRows = Table.Group(ChangedType, {"Дата", "Контрагент id", "Название контрагента", "Артикул"}, {{"таб", each Table.Max( _, "Дата2" ), type table}}),
    Result = Table.FromRecords( GroupedRows[таб] )
Вот эти две строчки можно "накликать" или это вы сами писали?
 
Цитата
OblivionR написал:
можно "накликать"
Не видел таких кнопок.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Table.Max( _, "Дата2" ), type table
Привет, Алексей.
А почему type table? Вроде же должно быть Record.Type?
 
Андрей VG, здравствуйте. может, проверка на внимательность? :)  
 
Андрей VG, потому что на бегу мышкой наклацал, подправил формулу группировки и не проверил.  :oops:  Хотя на функциональность оно не влияет, но учу людей нехорошему. Это да. Спасибо за вашу внимательность и поправки.
З.Ы. Кстати, в последних версиях PQ при выборе в меню группировки "все строки" теперь генерится другой код, там сразу типизация полей таблицы прописывается. Вот в том варианте я бы словил ошибку, и написал бы как надо.  :D
Изменено: PooHkrd - 02.12.2019 14:39:44
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх