Страницы: 1
RSS
Удаление НЕ дублей в Power Query
 
Всем привет, возникла необходимость из данных, загруженных в  Power Query, удалить все, что встречается по 1 разу, оставив остальное - то есть то, что встречается 2 и более раз. Сверка идет сразу по двум столбцам, Имя и Бренд.
http://prntscr.com/10wbg18

Вот если нужен противоположный результат в  Power Query есть инструмент Удалить повторения, останутся уникальные. А вот, как оставить, только повторы. Что мне нужно, ниже пример.
-------------
Например,
Сергей Власов Hyundai
Сергей Власов Saab

это уже 2 совпадения и эти данные нужно оставить.

А вот
Александр Волков Porsche
Александр Волков Porsche
Александр Волков Porsche

это все считается 1 значением, и подобное нужно отсечь.

Я во вложенном примере сделал на листе Сверка просто в лоб сводную, и выделил условным форматированием то, что должно выгрузиться в Power Query.
Весь массив данных именно сразу, как в примере в сводную закинуть не могу, эксель просто не справляется с обработкой, много данных. А вот если их прогнать через Power Query, то очень даже шустро сводная строится.  
Изменено: Rulsan - 26.03.2021 19:56:48
 
Привет и вам.
Цитата
Rulsan написал:
во вложенном примере
Куда вложенном?
Далее, вот это
Цитата
Rulsan написал:
удалить все, что встречается по 1 разу, оставив остальное - то есть то, что встречается 2 и более раз
полностью противоречит вот этому
Цитата
Rulsan написал:
Сергей Власов Hyundai
Сергей Власов Saab
это уже 2 совпадения и эти данные нужно оставить. А вот
Александр Волков Porsche
Александр Волков Porsche
Александр Волков Porsche
это все считается 1 значением, и подобное нужно отсечь.
Где в верхнем примере совпадения, если в разрезе полей имя/бренд там 2 уникальные строки, а в нижнем примере - как раз 3 повторения одного и того же.
Определитесь с понятиями, что вам нужно?
Вот горшок пустой, он предмет простой...
 
извиняюсь, только заметил, что файл не прикрепился. Я может просто плохой объясняльщик)
Если у одного человека встречаются 2 и более разных брендов, то такие данные надо выгружать - как у Сергей Власов и других, выделенных желтым.
А если у человека попадается только 1 бренд, не важно сколько раз - 1 раз попадается или 100 раз, но он 1, то их надо отсечь. Вот у Александр Волков попадается трижды, но это только один бренд Porsche, он не должен выгружаться.  
Изменено: Rulsan - 26.03.2021 20:02:09
 
Rulsan, т.е. нужно зачистить не дубли по Волкову в порше, а вообще всего Волкова во всех поршах?
З.Ы. А, и еще всех кто встречается просто по одному разу. Вроде дошла идея.
Изменено: PooHkrd - 26.03.2021 20:07:05
Вот горшок пустой, он предмет простой...
 
по сути, мне нужно, чтобы получилась такая же таблица, но отсеклись все сотрудники, у которых был только 1 бренд. Вот я слегка дополнил исходный файл, выделил, что должно выгрузиться, желтым. То же самое, но кроме тех, кто имеет по 1 бренду

http://prntscr.com/10wc2d7
 
Пробуйте
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="База"]}[Content],
    #"Grouped Rows" = Table.Group(Источник, {"Сотрудник"}, {{"кол", each List.Count( List.Distinct([Бренд]) ), Int64.Type}, {"таб", each _, type table}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([кол] <> 1)),
    таб = Table.Combine( #"Filtered Rows"[таб], type table [#"№ п/п"=number, Сотрудник=text, Бренд=text] )
in
    таб
Вот горшок пустой, он предмет простой...
 
спасибо...буду разбираться, очень похоже, что работает, я правда не пойму как.  
 
Цитата
Rulsan написал:
не пойму как.  
Группируем по сотруднику, в одном столбце считаем количество уникальных по столбцу бренд, в другой просто выводим неизмененные таблицы, потом фильтром убираем все строки со значением = 1, потом оставшиеся после фильтрации сгруппированные таблицы собираем в кучу через Table.Combine.
В общем и целом, алгоритм простой.
Вот горшок пустой, он предмет простой...
 
да, вроде простой, и скрипт короткий, но я по нему не могу понять на что надо нажимать, чтобы получился исходный результат(( как уже только не группировал

В общем, у меня выгружает вроде те данные, что нужно, но отсекает не все. Отсекает тех, у кого 1 бренд встречается по 1-му  разу, но не отсекает у кого 1 бренд, по нескольку раз (как Александр Волков с одним брендом Porsche, который у него трижды) . Мистика какая-то.


http://prntscr.com/10we4ss
http://prntscr.com/10we6bu  
Изменено: Rulsan - 26.03.2021 21:25:07
 
Доброе время суток
Цитата
Rulsan написал:
у меня выгружает вроде те данные, что нужно, но отсекает не все
Сугубо по тому, что нет в мышкоклацательном варианте вывода количества уникальных значений по заданному столбцу.
Код
List.Count( List.Distinct([Бренд]) )

Максимум чего можно добиться - количество уникальных строк
Код
Table.RowCount(Table.Distinct(_))
Что в силу уникального набора по столбцу "№ п/п" - не достижимо.
Вывод - пора изучать Power Query на более детальном уровне.
 
у меня, кажется, получилось) , не так красиво, как в вашем решении, но вроде же работает, отсекает, что не нужно
http://prntscr.com/10wi7or


Код
let
    Источник = Excel.CurrentWorkbook(){[Name="База"]}[Content],
    #"Сгруппированные строки" = Table.Group(Источник, {"Сотрудник"}, {{"кол", each List.Count( List.Distinct([Бренд]) ), Int64.Type}, {"таб", each _, type table}}),
    #"Развернутый элемент таб" = Table.ExpandTableColumn(#"Сгруппированные строки", "таб", {"№ п/п", "Бренд"}, {"таб.№ п/п", "таб.Бренд"}),
    #"Строки с применным фильтром" = Table.SelectRows(#"Развернутый элемент таб", each ([кол] <> 1)),
    #"Переупорядоченные столбцы" = Table.ReorderColumns(#"Строки с применным фильтром",{"таб.№ п/п", "Сотрудник", "кол", "таб.Бренд"}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Переупорядоченные столбцы",{{"таб.№ п/п", "№ п/п"}}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Переименованные столбцы",{"кол"})
in
    #"Удаленные столбцы"
Изменено: Rulsan - 27.03.2021 09:04:59
Страницы: 1
Наверх