Страницы: 1
RSS
Удаление дублей в Power Query, Более 1000 строк, удаляет некорректно
 
Добрый день, многоуважаемые!
Помогите, пожалуйста.

Дано: множество таблиц с массивом 14к строк. 2 столбца ФИО и СТАТУС.
Цель: причесать таблицу в PQ, а именно удалить дубли с разными статусами. Есть приоритетный статус, который должен остаться, другие дубли со статусом ниже должны быть удалены.

Как не работает у меня:
Запустил в PQ табличку.
Создаю алгоритм обработки таблицы.
Сделал сортировку по статусу. Получил в начале приоритетный статус, остальные статусы ниже.
Через ПКМ на столбец с ФИО => удаляю дубли по ФИО.
Логика такая: удаляются следующие повторные значения, а первое сохраняется с приоритетным статусом (благодаря сортировке).

Проверка показала: некоторые ФИО удалялись строки с приоритетным статусом, которые должны были быть отсортированы вверху.

Гипотеза проблемы: из-за того, что строк больше 1000, сортировка идёт некорректно и только по первым строкам. Остальные не сортируются, поэтому и удаляются приоритетные статусы.

К сожалению, файл не могу отправить из-за ком.тайны :(


P.S.: и подскажите, пожалуйста, почему ломается выгрузка в PQ, если экспортированный файл с сервера просто пересохранить (ничего не изменяя). При этом заметил, что после сохранения меняется размер файла. Как этого можно избежать?
 
Цитата
gnn323 написал:
Логика такая:
плохая логика, сортировка в PQ это тонкая материя. Поэтому - ФИЛЬТРУЙТЕ по приоритетному статусу. Хотите деталей - потрудитесь сделать пример, не содержащий ком. тайны (бабочки/цветочки вполне устроят)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
плохая логика, сортировка в PQ это тонкая материя
Добрый день. Понимаю, что логика плохая, но пока видел только это решение, помимо подготовки самого экспортированного файла.  

Цитата
buchlotnik написал:
потрудитесь сделать пример, не содержащий ком. тайны (бабочки/цветочки вполне устроят)

Сделал пример, сообразил как упростить. В нём отобразил кусок работы PQ внутри дока. Вроде ничего не должно сломаться.

Спасибо!
 
Добрый день! Перед удалением дублей добавь столбец индекса. Тогда первые элементы остаются, а все последующие дубли удалятся.
 
Цитата
RVA написал:
добавь столбец индекса. Тогда первые элементы остаются
Тогда и сортировка нарушится. Утверждать не буду.
 
Цитата
RVA написал:
Добрый день! Перед удалением дублей добавь столбец индекса. Тогда первые элементы остаются, а все последующие дубли удалятся.
Благодарю.
Вроде все успешно. Кейс повторил, результат стал чище.
 
Цитата
gnn323 написал:
Вроде все успешно
Пример взял отсюда. Добавьте после сортировки индекс. Еще ссылка
Изменено: Михаил Л - 10.09.2020 16:58:00
 
Чтобы не вникать в непонятное и не зависеть от возможного внесения изменений в транслятор языка М в будущем, я теперь всегда делаю так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    PromotedHeaders = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    GroupedRows = Table.Group(PromotedHeaders, {"Имя пользователя"}, {{"Статус курса", each Table.Sort(_,{{"Статус курса", Order.Ascending}})[Статус курса]{0}?, type text}})
in
    GroupedRows
Вот горшок пустой, он предмет простой...
 
PooHkrd, а так короче и "типа без сортировки" :)
Код
GroupedRows = Table.Group(PromotedHeaders, {"Имя пользователя"}, {{"Статус курса", each Table.Min(_, "Статус курса")[Статус курса], type text}})
F1 творит чудеса
 
Максим Зеленский, честно говоря не очень уверен я как отрабатывает Table.Min/Max на тексте, поэтому не лез в эту степь. А так-то те же яйца только в профиль. :)
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх