Привет, коллега!
Недавно в комментариях было пожелание - разобрать особенности объединения запросов в Power Query.
Для понимания, объединение запросов в Power Query бывает двух видов:
- Объединение - когда по ключевому столбцу (одному или нескольким) можно подтянуть данные из другого запроса. Это аналог ВПР.
- Добавление запросов - соединение таблиц одна под другой (собрать данные из разных запросов в один)
Про объединение запросов на канале есть статья на много букв - почитайте, кто не очень в теме, т.к. там я рассмотрела вообще все варианты объединения запросов, и здесь не буду останавливаться на том, как сделать само объединение.
В этих статьях описана база, без которой никак. Однако, у каждого инструмента есть особенности использования, которые отлично знают те, кто давно работает в Power Query, но на которых прекрасно ломаются новички.
Рассмотрим объединение запросов (ВПР)
Обязательно учитывайте эти нюансы, если собираетесь сделать объединение запросов в Power Query по одному или нескольким ключевым столбцам:
1. После объединения нельзя переименовывать столбцы
Это касается ключевых столбцов (тех, по которым вы связываете запросы), а также тех столбцов, которые потом выводите в объединенный запрос Power Query.
Вот здесь он, бедолага, ищет столбец ДеньНедели, который зачем-то переименован и называется просто День. Запрос при этом не ломается, т.к. мы не объединяем по столбцу ДеньНедели, а лишь выводим его. Но данные не подтянулись.
А здесь вообще все сломалось, т.к. мы переименовали ключевой столбец Дата в таблице-источнике.
2. Удалять ключевые столбцы, а также столбцы из запроса-источника, которые вы подтягивали в запрос, тоже нельзя
Удалив ключевой столбец, получите ошибку и запрос не будет работать.
Если из запроса-источника удалите столбец, который нужно вывести в основной запрос - то ошибки не будет, но и данных не будет.
3. Переименовать или удалить сам запрос, если он уже объединяется с другим запросом, тоже не получится
4. Можно объединять столбцы только одного типа
Если хотя бы у одной из пары ключевых столбцов не будет совпадать тип - значения не подтянутся.
Вот например здесь в таблице-источнике тип столбца Дата - Текстовый.
А в основной таблице, куда затягиваем данные, формат ключевого столбца Дата - Дата и время. И не удивительно, что столбец из таблицы-источника, подтянулся со значениями null (хотя на предыдущей картинке видно, что значения в нем есть)
Чтобы все работало, как надо, нужно привести типы данных к единому формату - тут не важно, в какой именно таблице поменять тип, зависит от задачи.
Но! есть один тип данных, который дружит с другими типами - он называется Любой. Выглядит вот так:
Он обычно появляется, если удалить шаг автоматический шаг Измененный тип.
Вчера в своем телеграмм-канале как раз привела пример, почему иногда приходится удалять шаг Измененный тип.
5. Префикс названия таблицы при развертывании результата объединения запросов
Когда вы, объединив запросы, нажимаете на две стрелочки, чтобы развернуть результат объединения, то появляется такое окно c галочкой Использовать исходные имя столбца как префикс.
Если ее оставить, то заголовки столбцов, которые подтянулись из таблицы-источника, будут выглядеть так:
Я обычно эту галочку снимаю, иначе имена столбцов становятся слишком длинными.
Но! Иногда этот префикс бывает очень полезен. Например, когда вы объединяете много разных запросов - чтобы не запутаться, какой столбец из какого запроса тянется. Или в разных запросах столбцы называются одинаково, тогда префикс напомнит вам, из какой таблицы эти данные.
В любом случае, если префикс станет мешать, его всегда можно убрать или изменить на другой. Нужно лишь провалиться в шестеренку на шаге Развернутый элемент и стереть/изменить имя префикса.
6. При объединении запросов есть два варианта:
- просто объединить запросы: в этом случае данные из запроса-источника подтянутся в основной запрос.
- объединить запросы в новый: тогда будет создан еще один запрос как результат объединения, а первые два запроса останутся неизменными. Иногда это полезно.
Добавление запросов
Это по сути то же самое, что в excel скопировать одну таблицу под другой. Но и здесь Power Query отличился (если интересно, почему "и здесь" - недавно писала статью "Почему не всем дается Power Query", в которой рассмотрела отличия Power Query от Excel).
Освежим в памяти: чтобы добавить запросы один к другому, нужно выделить один из запросов, и на вкладке Главная выбрать Объединить - Добавить запросы.
Здесь можно выбрать Две таблицы или Три таблицы или больше. Затем выбрать таблицу, которую нужно присоединить снизу.
1. Если было две таблицы, а вдруг станет больше... а уже выбрали вариант Две таблицы
Это не страшно. Просто переходите в настройки шага Добавленный запрос и переставляете переключатель на Три таблицы и больше.
Затем выбираете нужную таблицу и нажимаете Добавить.
2. Можно добавить запрос к текущему или добавить их все в новый запрос
Здесь решать вам, какой вариант предпочесть.
Но из моей практики - лучше добавлять в новый запрос.
Потому что может возникнуть ситуация, когда станут не нужны данные самого первого, корневого запроса, к которому вы добавили все остальные.
В этом случае самую первую таблицу (которая стала не нужна) никак не удалить.
И будет сложно пересобрать всю эту историю.
3. Power Query регистрозависимый, помним это всегда!
Имеем две таблицы с одинаковым набором столбцов, которые нужно собрать в одну.
И если мы просто добавим их в один запрос, то получим такое...
Столбец "Наименование" не склеился со столбцом "наименование" - все потому, что во втором случае слово написано с маленькой буквы и Power Query воспринимает их как два разных слова.
Что делать? Переименовать столбцы, чтобы они назывались одинаково.
(что интересно - пробелы в начале и в конце названий столбцов Power Query не воспринимает)
Ох, опять понаписала на миллион букв 😆 Но, надеюсь, было полезно. А может, вы знаете еще какие-то нюансы при объединении/добавлении запросов в Power Query? Делитесь в комментариях.
Также подписывайтесь на мой телеграмм-канал, там будут не только напоминания о новых статьях, но и короткие полезные заметки.