Power Query: Поставщики с минимальной ценой (нестандартная группировка)
HTML-код
- Опубликовано: 15 окт 2024
- В этом видео мы рассмотрим два способа решения задачи «Поставщики с минимальной ценой» с помощью Power Query и сравним скорость их обновления.
00:45 Постановка и описание задачи
02:13 Способ 1: Написание формул M
24:46 Способ 2: Решение с помощью интерфейса (кнопочное решение)
34:40 Сравнение скорости обновления запросов
Первое видео про нестандартную группировку: • Power Query: нестандар...
Канал Максима Уварова и Максима Зеленского про Power BI: / bitvru
Файл тут: yadi.sk/i/BvHp...
Приглашаю всех желающих освоить Power Query на свой курс «Разработка запросов Power Query в Excel (с изучением языка M)».
Описание курса и регистрация доступны по ссылке: bit.ly/3ofVZrr
Освоить основы Power Query Вы можете на моём бесплатном курсе «Основы Power Query».
Описание курса и регистрация доступны по ссылке: bit.ly/3jlC5rx
Преподаватель от Бога Excel
Очень помогли! Спасибо!
Подтверждаю, Сергей великолепный преподаватель
Сергей, подскажите, как замерять время через pq
@@jenyura вот тут хорошая ветка на эту тему, там обсуждается несколько вариантов
www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=102852&TITLE_SEO=102852-vremya-obnovleniya-zaprosov-power-query&tags=UDF
Супер! Большое спасибо!
Сам того не зная пользовался способом Максима Зеленского пару лет))))
Почти "интерфейсное" решение последнего шага запроса qMinSupplierFilter после строки "Строки с примененным фильтром" еще раз сгруппировать( =Table.Group(#"Строки с примененным фильтром", {"Товар", "Мин.цена"}, {{"Tab", each _, type table}}) ), затем добавить столбец со списком поставщиков(= Table.AddColumn(#"Сгруппированные строки1", "Поставщики", each [Tab][Поставщик])) и развернуть с разделителем (= Table.TransformColumns(#"Добавлен пользовательский объект", {"Поставщики", each Text.Combine(List.Transform(_, Text.From), ","), type text}) .
Виталий, проверю в ближайшее время, но уже чувствую, что рабочая идея. Спасибо!
Виталий, всё равно придётся ссылаться на столбец таблицы и писать Text.Combine. Или я чего-то не понял?
Мне с переменными сложно, поэтому я делал через вложенные блоки let.
Принцип такой: я вывел N строк таблицы с минимальным значением цены, а N привязал к числу повторов в таблице самого минимального значения.
После добавления столбца Rows, где в каждой ячейке сгруппированная таблица, добавил столбец:
#"Добавлен пользовательский объект" =
Table.AddColumn(
#"Сгруппированные строки", "Пользовательский",
each let
Таблица = [Rows]
in Table.MinN(Таблица, "Цена", List.Count(List.Select(Таблица[Цена], each _ = List.Min(Таблица[Цена]) ) )
))
То есть я внутри шага с добавлением столбца задал как бы ещё один шаг "Таблица" и присвоил этому шагу значения в столбце "Rows", то есть те самые таблицы в ячейках. И далее уже ссылался на шаг "Таблица", подразумевая под ним эти самые таблицы в ячейках
Я пробовал напрямую, без вложенного блока let, но PQ выдавал ошибку