Power Query. ВПР без Merge / Join

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 20

  • @comrade_excel
    @comrade_excel  2 роки тому

    Файлы для спонсоров Boosty: boosty.to/comrade-xl/posts/09e1eef0-1e9a-4273-b0d5-d15f3249928e?share=post_link
    Файлы для спонсоров ВК: vk.com/comrade.excel?w=wall-185123800_536
    Файлы для спонсоров UA-cam: ua-cam.com/users/postUgkxTJ29KU2S4TbPMbguhH94tlw_gd2YZnnN
    🧑‍🏫 Индивидуальное обучение: comrade-xl.ru/pq-training/
    💻 Страница урока на сайте: comrade-xl.ru/2022/07/06/pq-vars-vlookup-single-column/
    Эпизоды:
    00:00 О чем этот урок
    01:06 Предварительная работа
    03:45 Подставляем данные из столбца другой таблицы

  • @chale_r
    @chale_r 2 роки тому +9

    Где Вы всему этому научились?
    Как возможно в принципе дойти до такого ...???!!!
    Я в шоке от каждого видео.
    Низкий поклон за труд.

    • @comrade_excel
      @comrade_excel  2 роки тому +1

      Спасибо! Что-то прочитал, а что-то потом приходит с опытом.

    • @texadmin4749
      @texadmin4749 2 роки тому +1

      @@comrade_excel Очень интересно, но ничего не понятно :)

  • @ДмитрийНикитин-и8о
    @ДмитрийНикитин-и8о 10 місяців тому +1

    Интересное наблюдение: чтобы из table сделать record я сначала по ошибке использовал функцию Table.ToRecords. В итоге получил list из records, то есть совсем не то, что требовалось. Потом подсмотрел в данном видео, что использовалась другая функция - Record.FromTable. Ещё важная особенность этой функции в том, что первый столбец таблицы должен непременно называться Name, а второй - Value, иначе PQ выдаёт ошибку, поэтому переименование столбцов в данном видео было отнюдь не косметическое.
    Ещё важный момент: в таблицах, из которых подтягиваем значения, не должно быть дублей - иначе выдаст ошибки.

    • @spa487085
      @spa487085 6 годин тому

      Спасибо! К сожалению, автор Товарищ Excel такие тонкости не освещает... не только в этом видео, но и в других. Поэтому, я принял для себя решение, что посмотрю ещё несколько видео, и если будет идти с трудом освоение PQ из-за остуствия методической базы, то отпишусь от спонсорства.

  • @ДмитрийНикитин-и8о
    @ДмитрийНикитин-и8о 10 місяців тому

    5:18 Вот никак не пойму, почему тут нам не выдаёт ошибку: [ticket_type]{[ticket_type=[ticket_type]]}? Ведь мы же ссылаемся на столбец внешней таблицы, который по идее не виден, и должна выдаваться ошибка. Товарищ Excel, пожалуйста, объясни этот момент: почему в примерах где мы использовали функцию Table.SelectRows и ссылались на столбец внешней таблицы, нам выдавалась ошибка (и мы использовали вложенную конструкцию let ... in ...), а в этом примере ошибку не выдаёт?

  • @alexeast555
    @alexeast555 2 роки тому

    Спасибо за видео, подскажите, если в таблице есть повторяющиеся значения, как сделать так, чтоб ошибка не появлялась, и бралось первое значение, как происходит когда используем merge?

    • @Shorek_chelvok
      @Shorek_chelvok 8 місяців тому

      при объединении как раз добавятся все вхождения

  • @ruMontyRaptor
    @ruMontyRaptor 2 роки тому +1

    Из текущего примера не совсем понятно для чего городить огород? чем эта функция лучше merge? в данном примере рациональнее использовать именно merge, тк в будущем разобраться в происходящем будет сильно проще, чем в этом избыточном нагромождении кода.

    • @Supersnickers91
      @Supersnickers91 5 місяців тому

      А как быть, если, например, в "Таблице №1" есть много строк "операция" с дублирующими значениями (и удалять их нельзя, т.к. каждая строка это каждая фин.операция), столбец "сумма" по каждой строке. И нужно добавить к этой таблице только один столбец с "наименованием проекта". И есть "Таблица №2", где есть столбец "операция" и как раз нужный нам столбец "наименование проекта". Так вот, если сделать merge к "Таблице №1" "Таблицу №2", по ключу "операция", то он задублирует некоторые позиции и "сумма" будет также задублирована.

    • @ruMontyRaptor
      @ruMontyRaptor 5 місяців тому

      @@Supersnickers91 как это относится к текущему примеру? после операции merge, под которой мы понимаем стандартную функцию Table.NestedJoin, у нас точно также добавляется столбец "mergeName", который содержит вложенную таблицу, и вот если эта вложенная таблица содержит несколько строк и мы ее развернем, только тогда у нас появятся дубли по основной таблице, но что нам мешает выполнить любые операции со вложенными таблицами? по типу List.Sum если нужно сумма по определенному столбцу, или list.Max average, table.Max для проверки по доп столбцу и тд и тп. зачем нам всю таблицу добавлять к каждой строке и потом ее фильтровать нагромождениями сложночитаемого кода, если есть join? к тому же merge поддерживает параметры, где не только JoinKind.LeftOuter, получается что функционал merge сильно выше, чем то что предлагает автор видео.

    • @ruMontyRaptor
      @ruMontyRaptor 5 місяців тому

      @@Supersnickers91 я даже решил потестить и если во вложенных табличках будут дубли по заведенному ключу(если все выполнять по методике автора видео, то что он пишет #table{[key = [inpurValue]]}), то вместо record вы получите "Expression.Error: Ключ соответствовал более чем одной строке в таблице."
      для того чтобы 1 в 1 скопировать впр из эксельки, нам нужно сделать мерж и от вложенной таблички взять первую строку.

    • @Supersnickers91
      @Supersnickers91 5 місяців тому

      @@ruMontyRaptor я имел ввиду, как вообще сделать такой мерж, чтобы остались все строки из таблицы №1 (даже дублирующие), при этом подтянулись все совпадающие из таблицы №2 и при этом столбец «сумма» из таблицы №1 не дублировался?)

    • @ruMontyRaptor
      @ruMontyRaptor 4 місяці тому

      @@Supersnickers91 надо чтобы во вложенных таблицах была 1 строка, те простой вариант просто удалить дубликаты по ключу во второй таблице
      ну и да, вариантов как поступить на самом деле сильно больше, в зависимости от задачи

  • @MrSiberianMan
    @MrSiberianMan 2 роки тому

    Если подтягиваемого значения не окажется,выдаст ошибку по аналогии с впр? И как сделать так чтобы ошибки не было? Iferror ?

    • @comrade_excel
      @comrade_excel  2 роки тому

      Аналог ЕСЛИОШИБКА - это try-otherwise. Пример использования здесь comrade-xl.ru/2020/06/15/power-query-links-3/

  • @ivankostikov8377
    @ivankostikov8377 2 роки тому +1

    Можно немного сократить количество ссылок с помощью List.PositionOf:
    = Table.AddColumn(
    Пользовательский1,
    "ticket_price",
    each rec_tables[ticket_types][ticket_price]
    { List.PositionOf( rec_tables[ticket_types][ticket_type], [ticket_type] ) }
    )

    • @Антоха-ц4ю
      @Антоха-ц4ю 2 роки тому +3

      Сократить то конечно можно, но оно должно быть еще и понятно для простых смертных)

  • @ilzebra2679
    @ilzebra2679 2 роки тому +3

    Не рекомендую этот метод
    Во первых он работает дольше, чем Join таблиц. Если мы попытаемся таким методом соединить две большие таблицы, то это займёт очень много времени. Даже с буферизацией таблиц.
    Во вторых, в этом видео пропущена важная деталь, которая может привести к ошибке. Когда мы составляем подобный запрос TableName{[ColumName = Value1]} то если в таблице будет несколько одинаковых значений Value1 то произойдет ошибка. Т.е. таблица из которой мы берём значения должна содержать только уникальные значения