بارگذاری افزایشی (Incremental Load) یکی از تکنیکهای مهم در انتقال دادهها است که فقط دادههای جدید یا تغییر یافته را از منبع به مقصد منتقل میکند. این روش به جای بارگذاری کامل دادهها در هر بار Refresh، تنها تغییرات را بارگذاری میکند. به عنوان مثال، در سیستمهای فروش، دادههای سال قبل که ثابت هستند یکبار بارگذاری میشوند و تنها دادههای سال جاری که تغییر میکنند، در هر بار Refresh اضافه میشوند.
آیا میتوان از Incremental Load در Power BI استفاده کرد؟
پاسخ کوتاه «خیر» نیست، اما انجام این کار با چالشهای جدی همراه است. این مقاله را دنبال کنید تا متوجه شوید چرا این روش در Power BI توصیه نمیشود.
بررسی گزینه Include in Report Refresh در Power BI
در Power BI، دادهها توسط Power Query خوانده و سپس در Data Model ذخیره میشوند. اگر نیاز به بارگذاری مجدد دادهها نباشد، میتوان برای هر کوئری، گزینه Include in Report Refresh را غیرفعال کرد.

مزایای غیرفعال کردن Load در Power BI
- کاهش مدت زمان Refresh دیتا مدل
- کاهش فشار روی سرور منبع
این مزایا در نگاه اول جذاب به نظر میرسند، اما مشکل زمانی پیش میآید که بخواهید دادههای غیرفعال را با دادههای جدید ادغام کنید.
استفاده از دستور UNION در Data Model Power BI
در مقالهای اشاره شده بود که میتوان دادههای غیرفعال را از طریق گزینه Enable Load غیرفعال کرده و سپس با استفاده از دستور UNION، دادههای غیرفعال و فعال را ادغام کرد. این روش ظاهراً مشابه Incremental Load عمل میکند.
اما باید توجه داشت که:
- مصرف حافظه: میزان حافظه موردنیاز برای این سناریو برابر است با:
- حافظه دادههای غیرفعالشده (Enable Load = Off) +
- حافظه دادههای فعالشده (Enable Load = On) +
- حافظه موردنیاز برای جدول حاصل از UNION
- افزایش مصرف RAM: در آزمایشی که با استفاده از DAX Studio انجام شد، مشاهده شد که حافظه اشغالی جدول UNION حتی از مجموع دو جدول بیشتر است.
(برای مشاهد تصویر با کیفیت اصلی روی آن کلیک کنید)

چرا مصرف RAM افزایش مییابد؟
موتور VertiPaq (یا همان xVelocity) دادهها را به صورت ستونی (Columnar) فشردهسازی میکند. اگر این موتور بخواهد دادههای UNION را بدون ایجاد نسخه جدید ذخیره کند، منطق فشردهسازی و ذخیرهسازی مختل میشود.
بنابراین، این روش در Power BI توصیه نمیشود. افزایش چشمگیر مصرف RAM میتواند کارایی کلی مدل داده را تحت تأثیر قرار دهد.
آیا روش خواندن دادهها در Power BI تفاوتی ایجاد میکند؟
نکته بسیار مهم این است که فرقی نمیکند دادهها در Power Query با چه روشی خوانده شوند. حتی اگر از دستورات SQL WHERE برای فیلتر کردن دادهها استفاده کنید، باز هم همین مشکل مصرف RAM در Power BI وجود خواهد داشت.
روش اجرا:
ما ۲ کوئری می سازیم که هر یک از آنها از اس کیو ال سرور به صورت حالت Import قسمتی از یک جدولی را با دستور SELECT با شرطی میخوانند.
یکی از این جداول از لود شدن مستثنی شده است.
سپس این ۲ جدول با هم با دستور UNION در Data Model ادغام شدهاند و این جدول جدید نزدیک به دو برابر فضای حافظه RAM بیشتر اشغال می شود.
All FactInternetSales =
UNION('FactInternetSales_gt_or_eq_2013', FactInternetSales_lt_2013)

(برای مشاهده تصویر با کیفیت اصلی بر روی آن کلیک کنید)

نتیجهگیری
اگرچه بارگذاری افزایشی (Incremental Load) میتواند در بسیاری از سیستمها به بهبود عملکرد کمک کند، اما در Power BI به دلیل ساختار ذخیرهسازی و پردازش دادهها توسط موتور VertiPaq، این روش منجر به افزایش چشمگیر مصرف RAM میشود. بنابراین، برای بهینهسازی مدل دادهها در Power BI، استفاده از این روش توصیه نمیشود.
مفهوم composite models in Power BI
مدلهای ترکیبی در Power BI چیست؟
مدلهای ترکیبی در Power BI به شما اجازه میدهند که دادهها را از چندین منبع مختلف مانند DirectQuery (دسترسی مستقیم به دادهها) و Import (وارد کردن دادهها) بهطور همزمان در یک گزارش استفاده کنید. این روش باعث میشود گزارشها انعطافپذیرتر و جامعتر باشند، زیرا میتوانید از دادههای بهروز (Direct Query) و همچنین دادههای Import شده بهره ببرید.
مزایای مدلهای ترکیبی:
- انعطافپذیری بیشتر: امکان ترکیب داده از منابع مختلف در یک گزارش.
- دسترسی به دادههای بهروز: استفاده از DirectQuery برای دادههایی که نیاز به بهروزرسانی مداوم دارند.
- گزارشهای جامعتر: ترکیب دادههای وارد شده با دادههای مستقیم برای ارائه تحلیلهای کامل.
مثال ساده:
فرض کنید دادههای فروش شرکت که هر لحظه تغییر میکند را از یک بانک اطلاعاتی SQL Server با استفاده از DirectQuery دریافت میکنید و اطلاعات مدیران محصول را از یک فایل Excel (که معمولا تغییر نمیکند) با روش Import وارد Data Model کنید.
با مدلهای ترکیبی میتوانید این دو منبع داده را در یک گزارش بههم متصل کنید و در یک نمودار همزمان فروشها و اطلاعات مدیران محصول را نمایش دهید.
توجه) برای اطلاعات بیشتر به مستندات مایکروسافت در مورد composite models in Power BI مراجعه کنید.
به عنوان اولین نفر، تجربه یا دیدگاه خود را بنویسید!