Power Query: нестандартная группировка с применение языка M (по мотивам вопроса ученицы)

Поделиться
HTML-код
  • Опубликовано: 28 ноя 2024

Комментарии • 34

  • @planetaexcel
    @planetaexcel 4 года назад +6

    Очень изящное решение! Супер! 👍

  • @yamskoy
    @yamskoy Год назад +1

    Спасибо, Сергей, видео очень познавательное

  • @michaels3586
    @michaels3586 4 года назад +2

    Брависсимо!!!!!!! Я точь в точь недавно решал аналогичную задачу с чеками , сколько в чеке оригинальных артикулов , оригинальных групп. Только с помощью DAX, правда названия групп так и не получилось вывести. Таки надо пройти курс у Вас , вечно руки не доходят, то одно то другое.....

  • @sergeykimkz
    @sergeykimkz 4 года назад

    Супер! Очень изящно! Курс очень толковый!

  • @hokmuns
    @hokmuns 4 года назад +2

    Хорошее видео))) какой программой пользуетесь для показа содержимого экрана во время записи?
    2-ой вопрос, получилось стандартными средствами через двойную группировку
    let
    Источник = Excel.CurrentWorkbook(){[Name="tOrders"]}[Content],
    #"Удалили лишнее" = Table.SelectColumns(Источник,{"Номер заказа", "Категория", "Сумма"}),
    #"Сумма и кол-во позиций" = Table.Group(#"Удалили лишнее", {"Номер заказа"}, {{"Сумма заказа", each List.Sum([Сумма]), type nullable number}, {"Кол-во позиций", each Table.RowCount(_), Int64.Type}, {"остальное", each _, type table [Номер заказа=nullable text, Категория=nullable text, Сумма=nullable number]}}),
    #"показали категории" = Table.ExpandTableColumn(#"Сумма и кол-во позиций", "остальное", {"Категория"}, {"остальное.Категория"}),
    #"кол-во уник категорий" = Table.Group(#"показали категории", {"Номер заказа", "Сумма заказа", "Кол-во позиций"}, {{"Категории", each Table.RowCount(Table.Distinct(_)), Int64.Type}})
    in
    #"кол-во уник категорий"

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад +1

      Денис, отличное решение второго вопроса, полностью интерфейсное👍
      Для записи видео и монтажа использую Camtasia.

  • @Shorek_chelvok
    @Shorek_chelvok 3 года назад +1

    Спасибо за видео,
    28:20
    что касается сцепить значения списка, через разделитель, без написания формулы, то можно сделать на следующем шаге кнопкой в заглавии столбца со списками, но вытянуть столбец все равно формулой :(

  • @АлексейКаплун-м2ф
    @АлексейКаплун-м2ф 3 года назад +2

    !!! Спасибо !!!

  • @DevilByte
    @DevilByte 3 года назад

    По поводу запроса qresult2+, я решал путем создания двух запросов, в первом запросе например а потом просто объеденчл их.

  • @alisanotsleep
    @alisanotsleep 4 года назад +2

    Добрый день, подскажите как решить такую задачу: Допустим, дана эта же таблица, но есть еще столбец поставщик. Допустим пять поставщиков с одинаковым набором товаров. Нужно сгруппировать по товарам, по минимальной цене, и вывести имя поставщика у кого каждый товар имеет минимальную цену.

    • @artemchetyrkin2067
      @artemchetyrkin2067 4 года назад +2

      Хотел было задать такой же вопрос. Тоже мучаюсь с подобной проблемой.

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад +2

      Была у меня такая задача, я её назвал "Минимальный поставщик", как найду поделюсь.
      Нашёл. Прототип решения тут: yadi.sk/i/_LoIhG9lJ6n1Zg
      Вроде бы записывал ролик, но пока не нашёл его, если не найду, запишу.
      Спасибо за вопрос!

    • @alisanotsleep
      @alisanotsleep 4 года назад +1

      @@PowerExcelTrainingSOZH Я решал эту задачу топорней) - в отдельном запросе группировал прайс по товару и по мин цене. Потом джойнил к первоначальному прайсу по цене, Null скрывал и оставались только Поставщики с мин ценой. Спасибо за ваше решение.

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад +1

      Антон, мне кажется, что такой подход опасен, а что если у разных товаров будет одинаковая цена? Плюс мне нужно было решить вопрос, чтобы выводились все поставщики с мин ценой, если таковых оказывалось несколько.
      Ролик не нашёл, видимо только на очных занятиях показывал. Поставил в план.

    • @alisanotsleep
      @alisanotsleep 4 года назад +1

      @@PowerExcelTrainingSOZH Я делал слияние по двум столбцам, по названию товара и по цене.

  • @666saturation9
    @666saturation9 4 года назад

    не болейте!

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Спасибо! Было много занятий перед этим, голос сел, а ролик хотелось записать.

  • @evgeniyatim3976
    @evgeniyatim3976 4 года назад

    А можно ли менять регистр букв? Урок замечательный!!!! Мне очень было полезно! Спасибо!

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Evgeniya, не совсем понятен Ваш вопрос, прошу пояснить, где именно нужно менять регистр?

    • @evgeniyatim3976
      @evgeniyatim3976 4 года назад

      В списке категорий все категории с большой буквы. Можно ли оставить только первую категорию с заглавной буквы, а остальные категории с маленькой?

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      @@evgeniyatim3976 хороший вопрос, я подумаю.

    • @alexperev8814
      @alexperev8814 2 года назад

      Так а что тут думать-то, конечно можно, просто добавляем ещё один шаг в конце, где комбинацией нескольких функций из раздела Text можно трансформировать столбец ‘список категорий’. ;-) P.S. Странно, что MS не сделали функцию, где только первая буква становится прописной… хотя можно и самому ее написать.

    • @xjHy4IVbu_d
      @xjHy4IVbu_d 2 года назад

      SentenseCase = (txt as text) as text => Text.Upper(Text.Start(txt, 1)) & Text.Lower(Text.Middle(txt, 2))

  • @owl1891
    @owl1891 3 года назад

    Скажите, а почему вы используете обычный блокнот, а не какой-нибудь Atom, Notepad++, Visual Studio code? Ведь там же в разы удобнее писать код - автозакрытие кавычек, скобок, разноцветная подсветка частей кода, табуляция удобнее и т.п.

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  3 года назад

      На видео я не всегда показываю всё, что использую ;-)
      В работе часто использую Notepad++, и согласен, там очень удобно.
      А при создании решений блокноты использую в первую очередь для заметок.

  • @jenyura
    @jenyura 4 года назад

    Сергей, а не проще было менять формулы, полученные от группировки во втором варианте, когда удалили ненужные столбы и сделали подсчёт уникальных строк, просто ручками вписать столбец? Или я что-то не учла?

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Евгения, не понял Вашу идею. Можете точнее описать фразу " просто ручками вписать столбец"?

  • @АннаТимошина-д9у
    @АннаТимошина-д9у 4 года назад

    По решению второй задачи: если не влезать формулы, можно же сделать две последовательных группировки?

    • @АннаТимошина-д9у
      @АннаТимошина-д9у 4 года назад

      Сначала нруппировать по двум столбцам (номер заказа и категория) и считать строки (столбец количество позиций в заказе). А во второй группировке - считать строки и сумма по столбу количество позиций в заказе.

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Да, всё верно, можно через двойную группировку, без написания формул.
      Исходная задача соответствует 3-му вопросу. В первых двух я попытался мягко подготовить к восприятию формулы в 3-м.

  • @АлексейБлагодер
    @АлексейБлагодер 4 года назад +1

    Сергей, умею работаю только в интерфейсе, только иногда правлю что-то руками в расширенном редакторе. Поэтому я сделал бы несколько разных запросов с разными группировками по номеру заказа. А потом бы последовательно делал merge. Но это не такое элегантное решение как у Вас одним запросом.
    А в принципе, не стал бы все усложнять, можно сделать сводную и примерно то же понимание данных получить и проанализировать.

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Алексей, мне уже многие написали о таком подходе, и я согласен, что почти всё в этой задаче можно решить через интерфейс. Но я никак не могу придумать, как решить вопрос по объединению списка категорий в одну строку 23:09. Буду благодарен, если поделитесь своими мыслями.

    • @АлексейБлагодер
      @АлексейБлагодер 4 года назад

      @@PowerExcelTrainingSOZH К сожалению, представляю только как сделать чисто интерфейсное решение для неизменного и достаточно короткого списка доступных категорий, через ручную замену значений в колонках. Но если применить решение описанное тут ruclips.net/video/FZx3IicfcYI/видео.html , то можно и сгенерировать запрос объединяющий список категорий в одну строку

    • @PowerExcelTrainingSOZH
      @PowerExcelTrainingSOZH  4 года назад

      Алексей, в этом видео демонстрируется точно такой же подход для сцепки, а именно ручное добавление Text.Combine.