Файлы для спонсоров 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 Подставляем данные из столбца другой таблицы
Интересное наблюдение: чтобы из table сделать record я сначала по ошибке использовал функцию Table.ToRecords. В итоге получил list из records, то есть совсем не то, что требовалось. Потом подсмотрел в данном видео, что использовалась другая функция - Record.FromTable. Ещё важная особенность этой функции в том, что первый столбец таблицы должен непременно называться Name, а второй - Value, иначе PQ выдаёт ошибку, поэтому переименование столбцов в данном видео было отнюдь не косметическое. Ещё важный момент: в таблицах, из которых подтягиваем значения, не должно быть дублей - иначе выдаст ошибки.
Спасибо! К сожалению, автор Товарищ Excel такие тонкости не освещает... не только в этом видео, но и в других. Поэтому, я принял для себя решение, что посмотрю ещё несколько видео, и если будет идти с трудом освоение PQ из-за остуствия методической базы, то отпишусь от спонсорства.
5:18 Вот никак не пойму, почему тут нам не выдаёт ошибку: [ticket_type]{[ticket_type=[ticket_type]]}? Ведь мы же ссылаемся на столбец внешней таблицы, который по идее не виден, и должна выдаваться ошибка. Товарищ Excel, пожалуйста, объясни этот момент: почему в примерах где мы использовали функцию Table.SelectRows и ссылались на столбец внешней таблицы, нам выдавалась ошибка (и мы использовали вложенную конструкцию let ... in ...), а в этом примере ошибку не выдаёт?
Спасибо за видео, подскажите, если в таблице есть повторяющиеся значения, как сделать так, чтоб ошибка не появлялась, и бралось первое значение, как происходит когда используем merge?
Из текущего примера не совсем понятно для чего городить огород? чем эта функция лучше merge? в данном примере рациональнее использовать именно merge, тк в будущем разобраться в происходящем будет сильно проще, чем в этом избыточном нагромождении кода.
А как быть, если, например, в "Таблице №1" есть много строк "операция" с дублирующими значениями (и удалять их нельзя, т.к. каждая строка это каждая фин.операция), столбец "сумма" по каждой строке. И нужно добавить к этой таблице только один столбец с "наименованием проекта". И есть "Таблица №2", где есть столбец "операция" и как раз нужный нам столбец "наименование проекта". Так вот, если сделать merge к "Таблице №1" "Таблицу №2", по ключу "операция", то он задублирует некоторые позиции и "сумма" будет также задублирована.
@@Supersnickers91 как это относится к текущему примеру? после операции merge, под которой мы понимаем стандартную функцию Table.NestedJoin, у нас точно также добавляется столбец "mergeName", который содержит вложенную таблицу, и вот если эта вложенная таблица содержит несколько строк и мы ее развернем, только тогда у нас появятся дубли по основной таблице, но что нам мешает выполнить любые операции со вложенными таблицами? по типу List.Sum если нужно сумма по определенному столбцу, или list.Max average, table.Max для проверки по доп столбцу и тд и тп. зачем нам всю таблицу добавлять к каждой строке и потом ее фильтровать нагромождениями сложночитаемого кода, если есть join? к тому же merge поддерживает параметры, где не только JoinKind.LeftOuter, получается что функционал merge сильно выше, чем то что предлагает автор видео.
@@Supersnickers91 я даже решил потестить и если во вложенных табличках будут дубли по заведенному ключу(если все выполнять по методике автора видео, то что он пишет #table{[key = [inpurValue]]}), то вместо record вы получите "Expression.Error: Ключ соответствовал более чем одной строке в таблице." для того чтобы 1 в 1 скопировать впр из эксельки, нам нужно сделать мерж и от вложенной таблички взять первую строку.
@@ruMontyRaptor я имел ввиду, как вообще сделать такой мерж, чтобы остались все строки из таблицы №1 (даже дублирующие), при этом подтянулись все совпадающие из таблицы №2 и при этом столбец «сумма» из таблицы №1 не дублировался?)
@@Supersnickers91 надо чтобы во вложенных таблицах была 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] ) } )
Не рекомендую этот метод Во первых он работает дольше, чем Join таблиц. Если мы попытаемся таким методом соединить две большие таблицы, то это займёт очень много времени. Даже с буферизацией таблиц. Во вторых, в этом видео пропущена важная деталь, которая может привести к ошибке. Когда мы составляем подобный запрос TableName{[ColumName = Value1]} то если в таблице будет несколько одинаковых значений Value1 то произойдет ошибка. Т.е. таблица из которой мы берём значения должна содержать только уникальные значения
Файлы для спонсоров 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 Подставляем данные из столбца другой таблицы
Где Вы всему этому научились?
Как возможно в принципе дойти до такого ...???!!!
Я в шоке от каждого видео.
Низкий поклон за труд.
Спасибо! Что-то прочитал, а что-то потом приходит с опытом.
@@comrade_excel Очень интересно, но ничего не понятно :)
Интересное наблюдение: чтобы из table сделать record я сначала по ошибке использовал функцию Table.ToRecords. В итоге получил list из records, то есть совсем не то, что требовалось. Потом подсмотрел в данном видео, что использовалась другая функция - Record.FromTable. Ещё важная особенность этой функции в том, что первый столбец таблицы должен непременно называться Name, а второй - Value, иначе PQ выдаёт ошибку, поэтому переименование столбцов в данном видео было отнюдь не косметическое.
Ещё важный момент: в таблицах, из которых подтягиваем значения, не должно быть дублей - иначе выдаст ошибки.
Спасибо! К сожалению, автор Товарищ Excel такие тонкости не освещает... не только в этом видео, но и в других. Поэтому, я принял для себя решение, что посмотрю ещё несколько видео, и если будет идти с трудом освоение PQ из-за остуствия методической базы, то отпишусь от спонсорства.
5:18 Вот никак не пойму, почему тут нам не выдаёт ошибку: [ticket_type]{[ticket_type=[ticket_type]]}? Ведь мы же ссылаемся на столбец внешней таблицы, который по идее не виден, и должна выдаваться ошибка. Товарищ Excel, пожалуйста, объясни этот момент: почему в примерах где мы использовали функцию Table.SelectRows и ссылались на столбец внешней таблицы, нам выдавалась ошибка (и мы использовали вложенную конструкцию let ... in ...), а в этом примере ошибку не выдаёт?
Спасибо за видео, подскажите, если в таблице есть повторяющиеся значения, как сделать так, чтоб ошибка не появлялась, и бралось первое значение, как происходит когда используем merge?
при объединении как раз добавятся все вхождения
Из текущего примера не совсем понятно для чего городить огород? чем эта функция лучше merge? в данном примере рациональнее использовать именно merge, тк в будущем разобраться в происходящем будет сильно проще, чем в этом избыточном нагромождении кода.
А как быть, если, например, в "Таблице №1" есть много строк "операция" с дублирующими значениями (и удалять их нельзя, т.к. каждая строка это каждая фин.операция), столбец "сумма" по каждой строке. И нужно добавить к этой таблице только один столбец с "наименованием проекта". И есть "Таблица №2", где есть столбец "операция" и как раз нужный нам столбец "наименование проекта". Так вот, если сделать merge к "Таблице №1" "Таблицу №2", по ключу "операция", то он задублирует некоторые позиции и "сумма" будет также задублирована.
@@Supersnickers91 как это относится к текущему примеру? после операции merge, под которой мы понимаем стандартную функцию Table.NestedJoin, у нас точно также добавляется столбец "mergeName", который содержит вложенную таблицу, и вот если эта вложенная таблица содержит несколько строк и мы ее развернем, только тогда у нас появятся дубли по основной таблице, но что нам мешает выполнить любые операции со вложенными таблицами? по типу List.Sum если нужно сумма по определенному столбцу, или list.Max average, table.Max для проверки по доп столбцу и тд и тп. зачем нам всю таблицу добавлять к каждой строке и потом ее фильтровать нагромождениями сложночитаемого кода, если есть join? к тому же merge поддерживает параметры, где не только JoinKind.LeftOuter, получается что функционал merge сильно выше, чем то что предлагает автор видео.
@@Supersnickers91 я даже решил потестить и если во вложенных табличках будут дубли по заведенному ключу(если все выполнять по методике автора видео, то что он пишет #table{[key = [inpurValue]]}), то вместо record вы получите "Expression.Error: Ключ соответствовал более чем одной строке в таблице."
для того чтобы 1 в 1 скопировать впр из эксельки, нам нужно сделать мерж и от вложенной таблички взять первую строку.
@@ruMontyRaptor я имел ввиду, как вообще сделать такой мерж, чтобы остались все строки из таблицы №1 (даже дублирующие), при этом подтянулись все совпадающие из таблицы №2 и при этом столбец «сумма» из таблицы №1 не дублировался?)
@@Supersnickers91 надо чтобы во вложенных таблицах была 1 строка, те простой вариант просто удалить дубликаты по ключу во второй таблице
ну и да, вариантов как поступить на самом деле сильно больше, в зависимости от задачи
Если подтягиваемого значения не окажется,выдаст ошибку по аналогии с впр? И как сделать так чтобы ошибки не было? Iferror ?
Аналог ЕСЛИОШИБКА - это try-otherwise. Пример использования здесь comrade-xl.ru/2020/06/15/power-query-links-3/
Можно немного сократить количество ссылок с помощью List.PositionOf:
= Table.AddColumn(
Пользовательский1,
"ticket_price",
each rec_tables[ticket_types][ticket_price]
{ List.PositionOf( rec_tables[ticket_types][ticket_type], [ticket_type] ) }
)
Сократить то конечно можно, но оно должно быть еще и понятно для простых смертных)
Не рекомендую этот метод
Во первых он работает дольше, чем Join таблиц. Если мы попытаемся таким методом соединить две большие таблицы, то это займёт очень много времени. Даже с буферизацией таблиц.
Во вторых, в этом видео пропущена важная деталь, которая может привести к ошибке. Когда мы составляем подобный запрос TableName{[ColumName = Value1]} то если в таблице будет несколько одинаковых значений Value1 то произойдет ошибка. Т.е. таблица из которой мы берём значения должна содержать только уникальные значения