Reference и Duplicate в Power BI

Tags: Power BI, Power Query

Когда вы работаете с таблицами и запросами в Power Query и Power BI, вы получаете возможность скопировать их с помощью следующих действий: Duplicate или Reference. У многих возникает вопрос, какова фактическая разница между этими двумя действиями. Объяснение простое, но очень важное для понимания: когда вы знаете разницу, вы будете использовать инструменты правильно. В этом коротком сообщении в блоге мы объясним, что такое Reference, а также ее отличие от Duplicate.

Duplicate

Если вы хотите скопировать весь запрос со всеми его шагами, то Duplicate - ваш друг. Давайте посмотрим на это в действии. В качестве примера предположим, что мы получили данные с веб-страницы BoxOfficeMojo, которая показывает нам информацию о фильмах-бестселлерах. Вот ссылка на страницу: https://www.boxofficemojo.com/alltime/world/?pagenum=..

В Power Query мы получили данные из Интернета и выбрали этот источник:



Скажем, для этой таблицы мы делаем некоторые преобразования. Например; удаление дополнительного символа «^» из последнего столбца (столбец «Год»);

 



а затем некоторые другие преобразования, поэтому мы получаем несколько шагов для этого запроса.

После выполнения всех этих преобразований вы понимаете, что эти данные предназначены только для первых ста бестселлеров, потому что на этой веб-странице нет оставшихся фильмов. Чтобы получить оставшиеся, вам нужно перейти на страницу 2, у которой есть другой URL-адрес, но с той же структурой данных.

Итак, что вам нужно сделать? Вы снова должны пройти все эти шаги на странице 2. Давайте сохраним этот пример как статический и базовый (потому что в сложных сценариях, когда у вас много страниц, вы можете использовать функции и параметры для прокрутки всех страниц и объединить их все вместе). Предположим, вы хотите осуществить все те действия, которые сделали для первой страницы, для второй страницы. Для этого; вы можете использовать Duplicate.

Создайте дубликат Box Office Mojo (мы его назвали, Box Office Mojo Page 1)




Когда вы создаете Duplicate-запрос, это будет точная копия первого запроса со всеми его шагами. Эти два запроса точно похожи друг на друга. Никакой разницы!

Duplicate в точности копирует запрос со всеми применяемыми его шагами в качестве нового запроса.

После создания копии вы можете перейти на исходный шаг, чтобы изменить URL-адрес:

Используя Duplicate, вам удалось скопировать запрос со всеми его шагами, а затем внести изменения в новый запрос. Исходный запрос не поврежден.

Duplicate - это опция выбора, когда вы хотите скопировать запрос, но выполнить другую конфигурацию пошагово.

Reference

Reference - еще один способ копирования запроса. Однако большая разница в том, что при обращении к запросу новый запрос будет иметь только один шаг: поиск из исходного запроса. Указанный запрос не будет иметь примененных шагов исходного запроса. Давайте посмотрим на этот вариант в действии. Продолжая приведенный выше пример; допустим, мы хотим создать новый запрос, который является результатом объединения результатов страницы 1 и страницы 2. Однако мы не хотим изменять какие-либо существующие запросы, потому что мы хотим использовать их как источник для других операций.

При щелчке правой кнопкой мыши на Box Office Mojo Page 1, мы можем создать Reference

Reference создаст новый запрос, который является копией Box Office Mojo Page 1, но содержит только один шаг:

 

 

 

Единственный шаг в новом запросе - поиск данных из исходного запроса. Что это значит? Это означает, что если вы внесете изменения в исходный запрос, это повлияет на этот новый запрос.

Reference создаст новый запрос, который имеет только один шаг: получение данных из исходного запроса.

Теперь мы можем использовать этот запрос, чтобы добавить в Box Office Mojo Page 2;

 

Результатом будет запрос, содержащий обе страницы;

 

Чтобы узнать больше об append и о различиях в Merge, прочитайте этот пост в блоге. В этом примере; мы использовали опцию Reference, чтобы создать копию исходного запроса, а затем продолжить некоторые дополнительные шаги. Для Reference есть много других способов использования.

Reference - хороший выбор, когда вы хотите разветвить запрос на разные шаблоны. По одному пути будет следовать ряд шагов, а по другому -разные шаги, и оба разделяют некоторые шаги в исходном запросе.

После выполнения добавления в этом примере рекомендуется снять флажок enable load на Page 1 и Page 2 запроса, чтобы сохранить некоторую память в Power BI.

 

 

Зависимость запросов

Выяснение того, какой запрос от какого зависит (или на какой ссылается) может быть проблематично, когда у вас слишком много запросов. Вот почему у нас есть опция меню Query Dependency на вкладке View Power Query;

 

В нашем примере выше это диаграмма зависимостей запросов

 

Duplicate или Reference

Теперь, когда вы знакомы с двумя вариантами копирования запроса, давайте более подробно рассмотрим их разницу.

 

Изоляция от оригинала или зависимость  к оригиналу

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

Ограничение ссылки

Вы не можете использовать ссылаемые запросы во всех ситуациях. В качестве примера; Если у вас есть запрос 1, а затем вы создали ссылку из него в качестве запроса 2. Вы не можете использовать результат запроса 2 в запросе 1! Это создаст круговую ссылку. Вы комбинируете запрос со ссылкой на сам запрос, это невозможно!

Некоторые действия, вызывающие Reference или Duplicate

В Power Query есть несколько действий, которые запускают Reference или Duplicate, давайте проверим эти параметры:

Append Queries as New или Merge Queries as New - это действие Reference

Эти два действия создают ссылку из исходного запроса, а затем добавляют или присоединяются к другим запросам.

Add as New Query - это действие Duplicate

Верьте или нет, когда вы щелкаете правой кнопкой мыши по столбцу или ячейке и выбираете Add as New Query, вы создаете дубликат исходного запроса.

 

Иногда это может вводить в заблуждение, потому что вы можете ожидать, что новый запрос будет исходить из оригинала, и с изменением оригинала этот запрос также изменится. Правда, в том, что это дублирующее действие, и после этого действия исходный запрос и новая копия будут изолированы друг от друга.

Copy и Paste не относятся ни к Duplicate, ни к Reference!

Это очередное неправильное представление о том, что Copy и Paste похожи на Duplicate. Это не так, и это и не Reference. Когда вы выполняете это действие по простому запросу (имеется в виду запрос, который не получен из любых других запросов), вы получаете результат, похожий на Duplicate.

 

Но когда вы делаете Copy и Paste на запрос, который получен из других запросов, результатом является копия всех исходных запросов. Вот результат копирования и вставки на Box Office Mojo All Pages (который получен из страницы 1 и стр. 2).

Резюме

Duplicate и Reference - это два разных действия, и они также отличаются от копирования и вставки запроса. Duplicate даст вам точную копию запроса со всеми шагами, Reference создаст ссылку на исходный запрос вместо этого как новый запрос. Duplicate - хороший выбор, когда вы хотите, чтобы две копии были изолированы друг от друга. Reference - хороший вариант при создании разных ветвей из одного исходного запроса. В Power Query есть несколько действий, которые запускают Duplicate или Reference, как указано в этом сообщении в блоге. Надеюсь, этот пост был полезен для вас, чтобы понять разницу между этими двумя действиями, и отныне использовать их мудро.



No Comments

Add a Comment