مقایسه Duplicate و Reference در Power Query
rهنگامی که با جداول یا کوئری ها در Power Query کار می کنید از دو امکان Duplicate و Reference برخوردارید. فهم تفاوت میان این دو قابلیت ساده و پر اهمیت است و منجر به استفاده صحیح و به جا از این امکانات می شود.
اگر در مورد Power Query اطلاع ندارید، قبل از مطالعه این مطلب ترکیب کردن داده ها در Power Query و همچنین شکل دادن داده در Power Query و مقایسه M و DAX را مطالعه نمایید.
Duplicate
اگر در پی جدولی مطابق با جدول اصلی خود با تمامی تغییرات اعمال شده بر آن هستید بهترین روش Duplicate است. برای پیاده سازی این مطلب از وب سایت boxofficemojo استفاده شده است که حاوی اطلاعات فیلم است. بعد از استفاده از لینک مورد نظر جدول حاوی اطلاعات فیلم در Power BI بارگذاری می شود. در تصویر زیر جدول را مشاهده می کنید.
بعد از بارگذاری جدول اقدام به تمیز کردن اطلاعات می کنیم. به طور مثال در ستون Year علائم اضافی مانند ^ را حذف می نماییم.
جدول نهایی ما مانند تصویر زیر است و گام های صورت پذیرفته جهت تغییر و تبدیل داده در آن ذخیره شده است.
بعد از انجام تمامی مراحل تمیز کاری داده متوجه می شوید تنها 100 رکورد برتر را در اختیار دارید و برای واکشی مابقی داده ها باید پیج های دیگر را واکشی کنید چرا که در هر صفحه تنها 100 رکورد اطلاعات موجود است. آدرس این صفحات متفاوت است اما ساختار داده ها یکسان است. لذا شما نیاز دارید تا تمامی مراحل تمیز کاری ذکر شده را برای صفحات جدید نیز اعمال کنید.
پس عمل Duplicate را برای جدول موجود با کلیک راست بر روی جدول اصلی مطابق تصویر زیر انجام می دهیم.
نکته مهم این است که با Duplicate کردن جدول تمامی گام های تمیز کاری داده بر روی جدول اصلی، در جدول جدید نیز ذخیره شده است. در واقع جدول جدید دقیقا یک کپی از داده ها و اعمال تمیز کاری و تغییرات داده بر روی آن است. در واقع این دو جدول دقیقا همانند یکدیگر هستند.
حال همانند تصویر از بخش Source آدرس را تغییر داده و آدرس صفحه دوم را برای واکشی رکوردهای 101 تا 200 وارد می کنیم.
اکنون شما رکوردهای 101 تا 200 را در اختیار دارید، اعمال لازم برای تمیز کاری و اصلاح اطلاعات به صورت خودکار بر روی آن انجام شده و فارغ از جدول اصلی می توانید گام های دیگری نیز به طور اختصاصی برای تغییرات داده ها اعمال کنید.
Reference
یکی از روش های دیگر برای کپی کردن جدول استفاده از عمل Reference است. این عمل تنها جدول شما را کپی می کند اما گام های تمیز کاری و تغییر داده را با آن کپی نمی کند. بیایید عمل reference را برای table0 که حاوی 100 رکورد اول است، انجام دهیم.
همان طور که در تصویر زیر قابل مشاهده است جدول سوم که با عمل reference ایجاد شده است حاوی گام های تمیزکاری داده نیست، همچنین گزینه Source در آن غیر فعال است.
مهمترین نکته ای که تفاوت میان این دو عمل را مشخص می کند این است که بعد از عمل Duplicate تغییرات جدید ایجاد شده پس از Duplicate بر روی جدول جدید اعمال نمی شود و تنها تغییراتی که تا قبل از عمل Duplicate صورت پذیرفته برای داده های جدید اعمال می شود. در واقع پس از عمل Duplicate دو جدول از یکدیگر مجزا می شوند و تغییرات بر روی هر یک بر دیگری اثر ندارد. اما وقتی برای یک جدول عمل Reference انجام می شود، هر تغییری بر جدول اصلی بر روی جدول Reference نیز صورت می پذیرد. بدیهی است تغییرات صورت پذیرفته بر روی جدول reference بر روی جدول اصلی اثری ندارد.
حال می توانیم جدول Duplicate و Reference را برای نگهداری 200 رکورد در یک جدول با یکدیگر Append کنیم. عمل Append داده های دو جدول را زیر هم ادغام می کند. بدیهی است دو جدول باید دارای ساختار مشابه باشند.
کاربرد اصلی Reference زمانیست که شما می خواهید داده ها خود را به 2 شاخه تقسیم کنید. به طور مثال شما جدولی حاوی اطلاعات خرید و برگشت از خرید دارید و می خواهید رکورد های خرید و فروش را از یکدیگر جدا کنید. لذا باید 2 بار عمل Reference را بر روی جدول اصلی انجام داده و یکی از جداول Reference را بر روی رکورد های خرید و دیگری را بر روی رکورد های برگشت از خرید فیلتر کنید. حال هر رکورد جدیدی به جدول اصلی وارد شود، در نهایت به یکی از شاخه های خرید یا برگشت از خرید نیز اضافه می شود.
وابستگی یا عدم وابستگی به اصل
عمل Duplicate یک کپی از جدول با تمامی گام های تمیز کاری داده ایجاد می کند که این کپی کاملا مستقل از جدول اصلی عمل می کند. پس از ایجاد این کپی می توانید هر تغییری روی جدول اصلی یا کپی ایجاد کنید و این دو جدول از یکدیگر هیچ تاثیری نمی پذیرند. در مقابل Reference یک کپی از جدول اصلی است و هر گونه تغییر بر روی جدول اصلی بر روی جدول reference نیز اثر می گذارد. به طور مثال اگر ستونی از جدول ابتدایی حدف شود، از جدول Reference نیز حذف خواهد شد.
فراخوانی Duplicate و Reference
برخی اعمال هستند که به طور خودکار Reference یا Duplicate را انجام می دهند.
Append as new یا Merge as new
حتما هنگام انجام عمل merge یا Append متوجه شده اید که می توانید این اعمال را مستقیما بر روی جدول یا با انتخاب Merge as new یا Append as new این اعمال را در جدول جدیدی انجام دهید. اگر این 2 عمل را انجام دهید در واقع به طور خودکار یک Reference از جدول اصلی ایجاد و سپس عمل merge یا Append با دیگر جداول انجام می شود.
Add as new Query
وقتی بر روی یک ستون کلیک راست کرده و گزینه Add as new query را انتخاب می کنید، در واقع یک Duplicate از جدول اصلی ایجاد کرده اید. شاید انتظار داشته باشید که این عمل وابسته به جدول اصلی باشد و تغییرات جدول اصلی در این جدول جدید ایجاد شود اما باید بدانید که اینگونه نیست و این دو جدول مستقل از یکدیگر عمل می کنند و تغییرات بر جدول اصلی بر روی جدول جدید اعمال نخواهد شد.
جمع بندی
عمل Duplicate جدول را با تمامی گام های تمیز کاری داده کپی می کند و پس از عمل کپی این دو جدول کاملا مجزا از یکدیگر عمل می کنند و هیچ تاثیری از یکدیگر نمی پذیرند. این مورد زمانی مناسب است که شما داده هایی با یک ساختار ولی در فایل ها یا صفحات مجزا در اختیار دارید. شما ساختار و گام های تمیز کاری را کپی می کنید و سپس می توانید منبع داده ای خود (مثلا صفحات مختلف وب سایت) را تغییر دهید.
عمل reference، یک کپی از جدول ایجاد می کند که فاقد گام های تمیز کاری داده است. اما هر تغییری در جدول اصلی در جدول جدید نیز اعمال می شود. این عمل زمانی مناسب است که شما قصد ایجاد چند شاخه از جدول اصلی را دارید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
ممنون استاد ،خیلی مفید بود .🙏🙏
سلام … ممنون از لطفتون