Power Query Ошибки №17. Удаление дубликатов, Подводные камни Table. Distinct
HTML-код
- Опубликовано: 10 янв 2022
- Что может пойти не так при использовании функции удаления дубликатов.
Файлы для спонсоров Boosty: boosty.to/comrade-xl/posts/ba...
Файлы для спонсоров ВК: comrade.excel?w=wall-1...
Файлы для спонсоров RUclips: • Post
Страница урока на сайте: comrade-xl.ru/2021/12/27/pq-e...
Файлы для спонсоров Boosty: boosty.to/comrade-xl/posts/bac738c2-ecc4-4208-983f-37e647cb1db8?share=post_link
Файлы для спонсоров ВК: vk.com/comrade.excel?w=wall-185123800_47
Файлы для спонсоров RUclips: ruclips.net/user/postUgkx0jpapOykb9u2gnpNA6v1BA1SaAhjsbwZ
Страница урока на сайте: comrade-xl.ru/2021/12/27/pq-errors-distinct/
Отличный у Вас контент, который сэкономил много времени! Спасибо!
Спасибо большое, Тимур!!! У тебя супер контент! Такие уроки очень нужны. Особенно про ловушки. Там и ошибки не выдаст и незаметно сделается что-то не так 😬. Успехов и удачи в Новом году!
Спасибо!
Спасибо большое! Решение давнишней проблемы !
Спасибо. Очень полезное видео 🤩
Супер! Спасибо!
Разобрались с очередной ловушкой)
это жесть
Спасибо большое за урок! Подскажите, пожалуйста, существует возможность в данной формуле прописать условие: удалить дубликаты, при этом оставив пустые ячейки?
А если объем исходных данных будет большим в сотни тысяч строк, то table.buffer не съест (перегрузит) оперативку? Как вариант перед удалением дубликатов можно добавить столбец индекса, тогда удаление будет правильным, после удалить этот столбец.
Да, вы правы, можно удалить дубликаты и без функции удаления дубликатов.
Я имел ввиду то, что вставленный столбец индекса после сортировки позволяет PQ правильно определить удаляемые дубликаты функцией удаления дубликатов, т.е. по сути получается тот же эффект, который создаёт table.buffer.
В этом случае PQ уже не хаотично удаляет дубликаты, а где-то в мозгах ориентируется по столбцу индекса, который определяет выстроенную очередность повторяющихся данных
@@user-qy5ff2ov4b Удивительно. Спасибо! Об этом явно нужно рассказать в дополнительном уроке.
Из ваших уроков тоже узнаю много нового и интересного! Спасибо!
@@user-qy5ff2ov4b Как я понимаю, 100% уверенности в этом не будет. Думаю, удалять дубликаты нужно именно там, где нужно просто удалить дубликаты, а не решать ещё попутно несколько задач.
Спасибо! А как избежать такой же ловушки при вычислении меры в DAX? Понятно что как-то через distinctcount. Но мне нужно чтобы он посчитал именно по последнему добавленному дубликату.
на практике я хз ка кон вообще считает. Допустим отчет накопительный по дням. Номера заказов могут кочевать изо дня в день, так вот для подсчета нужен именно самый последний по дате добавления в отчет.
короче, имеет смысл перед удалением дубликатов буферизовать талицу, чтобы избежать ошибок в будущем?
у меня сложилось впечатление что удаляя дубликаты PQ ориентируется на очередность строк в источнике
Это даже не ловушка, а баг powerquery. Где гарантия, что он другие функции так применять не будет? Какой смысл в "шагах" тогда?
Вы правы в том, что это не единственный случай в Power Query, когда порядок строк не гарантирован. Возможно, это и не баг, потому что в других продуктах тоже есть ситуации, в которых не гарантируется сохранение порядка строк.
@@user-to2jr3zr8t Не соглашусь в том плане, что в powerquery используются "шаги". Т.е. все последующие действия он осуществляет в отношении предыдущей "таблицы" данных, если явного, иного не указано. Во всяком случае я его логику всегда так понимал. В данном случае шаг сортировки есть, а дубликаты извлекаются из другого набора и явно этого не видно. Читаю описание функции Table.Buffer() и явного его применения в данной ситуации не вижу. Собственно она вообще для другого создана. Поэтому, пока больше к багу склоняюсь :)
@@comrade_excel в каких например?
@@MogalSherif В SQL тоже есть ситуации, в которых порядок строк не гарантирован. Я думаю, что это нельзя назвать багом, потому что нигде в описании Table.Distinct не написано, что удаляется только первый случай появления. Он ведь удаляет дубликаты? Удаляет, а как он это делает уже совсем другой вопрос.
Скорее всего это не баг. В документации Power Query в разделе Support and Troubleshooting - Common Issues написано об этом. Там рекомендуется применять Table.Buffer, т. е. как я показал в видео.