Страницы: 1
RSS
PQ получение крайних значений при удалении дубликатов
 
Построил запросы на PQ для получения отчета по активносте пользователей. Один из файлов, это лог подключений пользователе. Сейчас я удаляю дубликаты по полю логин. Но я хочу чтоб оставалась самая последняя запись с логином, где самая свежая дата.
Код
let
    Источник = Csv.Document(File.Contents("last_m_ftp.log"),4,"",ExtraValues.Ignore,1251),
    #"Измененный тип с языком" = Table.TransformColumnTypes(Источник, {{"Column1", type date}}, "en-US"),
    #"Переименованные столбцы" = Table.RenameColumns(#"Измененный тип с языком",{{"Column1", "data"}, {"Column2", "time"}, {"Column3", "IP"}, {"Column4", "login"}}),
    #"Удаленные дубликаты" = Table.Distinct(#"Переименованные столбцы", {"login"})
in
    #"Удаленные дубликаты"
 
Файла-примера нет 🤔
но нужно здесь, думаю, не через удаленные дубликаты, а через столбец индекса или группировку
 
Доброе время суток.
Самое простое перед Table.Distinc сделать сортировку по логину и по датам от самых свежих к самым тухлым...
 
Цитата
Андрей VG написал:
Самое простое перед Table.Distinc сделать сортировку
Ага, и после этого столбец с индексом сварганить не забыть, а то Table.Sort+Table.Distinct, оно такое... Вообще лучше всего конечно Table.Group по логину и внутри Table.Max по дате - железобетонный вариант.
Изменено: PooHkrd - 03.03.2021 10:05:17
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
железобетонный вариант.
Ну, вот сразу вы с кувалдой. Нет что бы дать не поздоровавшемуся ТСу без примера по развлекаться  :D
 
Андрей VG, извините, у меня просто теперь аллергия на Table.Distinct. 3 проекта в свое время переписывать пришлось. И до сих пор еще коллеги, лезут с вопросами, а чойта у меня тут не работает, все правильно ж делаю! У ТС, кстати, первый пост антиспам съел, не исключено что там он поздоровался. :D
Изменено: PooHkrd - 03.03.2021 10:46:54
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
У ТС, кстати, первый пост антиспам съел, не исключено что там он поздоровался.
Да, так и есть :), Когда увидел, что все заново переписывать, сделал быстрый пост перед сном.
Цитата
PooHkrd написал:
Вообще лучше всего конечно Table.Group по логину и внутри Table.Max по дате - железобетонный вариант.
А можно пожалуйста по подробней. А то я только начал в этом разбиратся.
 
Цитата
episkeftic написал:
по подробней
Ну, учитывая что примера нету, делайте так, а дальше уже сами разворачивайте нужные вам столбцы:
Код
let
    Источник = Csv.Document(File.Contents("last_m_ftp.log"),4,"",ExtraValues.Ignore,1251),
    #"Измененный тип с языком" = Table.TransformColumnTypes(Источник, {{"Column1", type date}}, "en-US"),
    #"Переименованные столбцы" = Table.RenameColumns(#"Измененный тип с языком",{{"Column1", "data"}, {"Column2", "time"}, {"Column3", "IP"}, {"Column4", "login"}}),
    #"Удаленные дубликаты" = Table.Group(#"Переименованные столбцы", {"login"}, {{"tab", each Table.Max(_, "data"), type record}})
in
    #"Удаленные дубликаты"

Это если по дате, а если надо по дате времени, то сначала делайте единый столбец датавремя, а потом уже так как в примере выше.
Вот горшок пустой, он предмет простой...
 
Спасибо, использую вариант только с датой, т.к. нет большого потока данных.
Страницы: 1
Наверх