بررسی Duplicate و Reference در Power Query
اگر با جداول یا کوئریها در Power Query کار کرده باشید، احتمالاً با دو گزینه Duplicate و Reference مواجه شدهاید. درک تفاوت میان این دو قابلیت ساده ولی بسیار مهم است و در ادامه با یک مثال عملی در Power BI به بررسی آنها میپردازیم.
Duplicate
مطابق آموزشهای قبلی، ابتدا یک دیتاست شامل اطلاعات فروش کشورهای مختلف را به Power BI ایمپورت میکنیم. این دیتاست مشابه تصویر زیر است:
اکنون اگر بخواهیم نسخهای مستقل از این جدول داشته باشیم که بتوانیم بدون تأثیرگذاری روی جدول اصلی تغییراتی در آن اعمال کنیم، از گزینه Duplicate استفاده میکنیم. با انتخاب Duplicate، یک کپی کامل از جدول ایجاد میشود و تغییرات روی جدول جدید تاثیری روی جدول اصلی ندارد. این روش برای مقایسه سناریوها یا اعمال محاسبات متفاوت بسیار کاربردی است.
مطابق مطالب گذشته، یک دیتاست شامل اطلاعات فروش کشورهای مختلف را به Power BI ایمپورت میکنیم. دیتاست ما مطابق با شکل زیر میباشد:

ابتدا سطرهای اضافی بالای جدول را پاک میکنیم و با استفاده از دستور Use First Row As Header، عناوین ستونها را در جای درست خود قرار میدهیم (به نوار سبز رنگ توجه کنید).
اگر قصد داشته باشیم نسخهای از این جدول برای آزمایش یا تغییرات مختلف ایجاد کنیم، میتوانیم از گزینه Duplicate استفاده کنیم. با Duplicate یک کپی مستقل از جدول ساخته میشود که تغییرات روی آن، جدول اصلی را تحت تأثیر قرار نمیدهد.
از طرف دیگر، اگر بخواهیم یک جدول جدید داشته باشیم که همیشه به دادههای جدول اصلی متصل باشد، میتوانیم از گزینه Reference استفاده کنیم. جدول ایجاد شده با Reference به جدول اصلی وابسته است و هر تغییری در جدول اصلی، به صورت خودکار در جدول مرجع هم اعمال میشود.
با این روش، ترکیب پاکسازی سطرهای اضافی، استفاده از Duplicate و Reference در Power Query به شما امکان میدهد هم نسخههای مستقل برای آزمایش داشته باشید و هم جداول مرجع برای پردازش دادههای اصلی بدون تغییر در منبع اولیه ایجاد کنید.

اکنون قصد داریم از جدول Sale (جدول اصلی) یک Duplicate ایجاد کنیم. برای این کار، روی جدول Sale کلیک راست کرده و گزینه Duplicate را انتخاب میکنیم. با این کار یک نسخه مستقل از جدول اصلی ساخته میشود که تغییرات روی آن تاثیری روی جدول اصلی ندارد.
اگر بخواهیم در عین حال جدولی ایجاد کنیم که به دادههای اصلی متصل بماند و هر تغییر در جدول اصلی، به صورت خودکار در جدول جدید هم اعمال شود، میتوانیم از گزینه Reference استفاده کنیم. این روش با Reference یک جدول وابسته و مرتبط با جدول اصلی ایجاد میکند.
با استفاده همزمان از Duplicate و Reference در Power Query میتوانیم هم نسخههای مستقل برای آزمایش داشته باشیم و هم جداول مرجع برای پردازش دادهها بدون تغییر در جدول اصلی ایجاد کنیم، که این رویکرد مدیریت دادهها را بسیار کارآمدتر میکند.

با انتخاب گزینه Duplicate، تمامی تغییراتی که بر روی جدول اصلی (Sale) انجام دادهایم، در جدول Duplicate شده نیز اعمال میشود. اما از این مرحله به بعد، هر یک از جداول به صورت مستقل عمل میکنند و هر تغییری در یکی از آنها، تاثیری بر دیگری ندارد. برای مثال، در جدول Sale-Copy مقادیر ستون Region را بر روی Asia فیلتر میکنیم و مشاهده میکنیم که این تغییر در جدول اصلی Sale اعمال نمیشود.
در مقابل، اگر از گزینه Reference استفاده کنیم، جدول جدید به دادههای جدول اصلی وابسته میماند و هر تغییر در جدول اصلی، به صورت خودکار در جدول مرجع نیز اعمال میشود. بنابراین، تفاوت اصلی بین Duplicate و Reference در این است که Duplicate یک نسخه مستقل ایجاد میکند، اما Reference جدول جدید را به جدول اصلی متصل نگه میدارد.
با ترکیب استفاده از Duplicate و Reference، میتوان هم نسخههای مستقل برای آزمایش و تغییرات جداگانه ایجاد کرد و هم جداول مرجع برای پردازش دادهها بدون تغییر در منبع اصلی ساخت.

با مشاهده قسمت Applied Steps در جدول Sale-Copy متوجه میشویم که امکان تغییر آدرس Source وجود دارد. این قابلیت زمانی بسیار مفید است که بخواهید دادهها را از منابع مختلف، مانند صفحات وب یا فایلهای متفاوت، بارگذاری کنید، به شرطی که ساختار دادهها یکسان باشد.
در این حالت، میتوانید ابتدا جدول اصلی را با استفاده از گزینه Duplicate کپی کنید و سپس تغییرات ابتدایی را در جدول اصلی اعمال نمایید. پس از آن، برای هر منبع جدید، کافی است Source جدول Duplicate شده را تغییر دهید. اگر از گزینه Reference استفاده کنید، جدول مرجع ایجاد میشود که به جدول اصلی وابسته است و هر تغییر در جدول اصلی به صورت خودکار در جداول Reference اعمال خواهد شد.
با ترکیب Duplicate و Reference میتوان هم نسخههای مستقل برای آزمایش و پردازش دادهها ایجاد کرد و هم جداول مرجع برای مدیریت منابع مختلف بدون تغییر در جدول اصلی ساخت، که این روش در مدیریت دادههای پویا بسیار کاربردی است.


Reference
در مقابل، اگر بخواهیم جدول جدیدی داشته باشیم که به دادههای جدول اصلی متصل بماند و هر تغییر در جدول اصلی به جدول جدید منتقل شود، از گزینه Reference استفاده میکنیم. با Reference یک جدول مرجع ایجاد میکنیم که تغییرات اصلی را بهصورت خودکار دنبال میکند، بدون اینکه دادهها دوباره کپی شوند. این قابلیت باعث صرفهجویی در زمان و منابع میشود و برای مدیریت دادههای بزرگ کاربرد زیادی دارد.
در نهایت، تفاوت اصلی بین Duplicate و Reference در این است که Duplicate یک نسخه مستقل ایجاد میکند، اما Reference یک جدول وابسته و مرتبط با جدول اصلی میسازد. فهم دقیق این تفاوت به شما کمک میکند تا در Power Query کارایی بیشتری داشته باشید و از جداول خود به شکل بهینه استفاده کنید.
Reference هم مشابه Duplicate یک جدول کپی از جدول اصلی ایجاد میکند.برای ایجاد یک جدول از طریق Reference ، بر روی جدول sale کلیک راست کرده و گزینه Reference را انتخاب کنید:

با انتخاب گزینه Reference، تمامی تغییراتی که بر روی جدول اصلی (Sale) انجام دادهایم، در جدول Reference نیز اعمال میشود. به عنوان مثال، اگر در جدول اصلی مقدار ستون Region را برابر با Europe قرار دهیم، این تغییر به صورت خودکار در جدول Sale-Reference نیز منعکس میشود.
در مقابل، اگر از گزینه Duplicate استفاده کنید، جدول کپی شده کاملاً مستقل از جدول اصلی خواهد بود و هیچ تغییر در جدول اصلی، روی جدول Duplicate شده تأثیری ندارد. بنابراین تفاوت اصلی بین Duplicate و Reference در همین وابستگی جدول جدید به جدول اصلی است.
با درک درست استفاده از Duplicate و Reference، میتوانید مدیریت بهتری روی جداول خود در Power Query داشته باشید و هم نسخههای مستقل برای آزمایش بسازید و هم جداول مرجع متصل به دادههای اصلی ایجاد کنید.


توجه داشته باشید که تغییرات در جداول Reference یکطرفه است و همیشه از سمت جدول اصلی به جدول Reference شده اعمال میشود، نه برعکس.
حالت Reference زمانی بسیار کاربردی است که بخواهید مقادیر مشابه را به صورت جداگانه در چند جدول داشته باشید. برای مثال، با انجام دو بار عمل Reference، دو جدول جداگانه ایجاد میکنیم. هر کدام از این جداول Reference شده را بر روی یکی از قارهها فیلتر میکنیم (مثلاً یکی را بر روی آسیا و دیگری را بر روی اروپا). سپس جدول اصلی را از فیلد Item Type بر روی Meat فیلتر میکنیم.
در نتیجه، ما دو جدول داریم که مقادیر Meat را در هر کدام از دو قاره به صورت جداگانه نمایش میدهند. در مقابل، اگر همین فرآیند را با Duplicate انجام میدادیم، هر جدول مستقل بود و تغییرات در جدول اصلی روی آن تاثیری نداشت، زیرا جدول Duplicate شده مستقل از جدول اصلی عمل میکند.
نکته مهم دیگر این است که در جدولهای Reference امکان تغییر آدرس Source وجود ندارد. دلیل این موضوع این است که جدول Reference مستقیماً به جدول اصلی متصل است و نیازی به تغییر جداگانه منبع دادهها نیست (میتوانید این موضوع را در قسمت Applied Steps جدول Sale-Reference مشاهده کنید).

 
				 
															
با سلام و احترام
متشکرم جناب محمد یاری
ممنون از شما