پیاده سازی Incremental Load در پاور بی آی
در دنیای تجزیه و تحلیل داده، حجم دادهها به سرعت افزایش مییابد. انتقال کل دادهها از منبع به Power BI برای هر بار بهروزرسانی میتواند بسیار زمانبر و ناکارآمد باشد. برای حل این مشکل، Power BI امکان پیادهسازی Incremental Load یا بارگذاری افزایشی را فراهم میکند. این قابلیت تنها دادههای جدید یا تغییر یافته را بارگذاری میکند و باعث بهبود عملکرد، صرفهجویی در منابع و کاهش زمان بهروزرسانی میشود.
Incremental Load چیست؟
Incremental Load فرآیندی است که به Power BI امکان میدهد تنها دادههای تغییر یافته یا جدید را از منبع داده دریافت کند، به جای اینکه کل دادهها را مجدد بارگذاری کند. این روش برای سناریوهایی که دادههای منبع بزرگ هستند یا بهروزرسانیهای مکرر نیاز است، ایدهآل است.
مزایای Incremental Load در Power BI
- افزایش کارایی: زمان بارگذاری و پردازش دادهها کاهش مییابد.
- کاهش مصرف منابع: فشار روی سرورهای منبع و Power BI کاهش پیدا میکند.
- انعطافپذیری بیشتر: بهبود زمان پاسخدهی برای گزارشها و داشبوردها.
- بهروزرسانی سریعتر: دادههای جدید به سرعت به گزارشها اضافه میشوند.
در این مقاله با تکنیکی با نام Incerimental-Load آشنا می شوید، که در کاهش زمان ریلود داشبوردها بسیار به کار می آید.
اشخاصی که با داده و داشبوردسازی در PowerBI یا هر ابزار BI دیگری سر و کار دارند، ممکن است با منابع دادهای روبرو باشند که بخشی از داده ها دیگر تغییر نمیکند و یکسری از داده ها به طور مثال داده های جاری دائما در حال تغییر هستند . برای مثال سیستمهای مالی و حسابداری را در نظر بگیرید که وقتی سال مالی بسته میشود دیگر دیتای سال گذشته تغییر نمیکند. برای این کار شما می توانید تکنیک Incerimental-Load را پیاده سازی کنید.
این تکنیک برای منابع داده از جنس پایگاه داده مثل SQL، MySQL و … نیزبسیار مفید است.
برای درک بهتر مطلب موضوع را با یک مثال پیش می بریم:
فرض کنید دیتای فروش شرکتی از سال ۱۴۰۰ تا کنون به دست شما رسیده و با اطلاعات بسیار حجیمی روبرو هستید. تصمیم دارید اطلاعات را در فایل پاور بی آی واکشی کرده و داشبوردی طراحی کنید.
از آنجایی که دیتای فروش ارسال شده حجم زیادی از داده هایی هست که خیلی از آنها دیگر قابل تغییر نیستند باید از روشی استفاده کنید تا کمترین لود را در ادامه کار داشته باشید و تنها دیتای سال جاری است که تغییر می کند. در نتیجه برای این کار می توانیم از روش Incerimental-Load استفاده کنیم و دیتای سال های گذشته را از ریلود روزانه خارج کنیم.
برای اینکار:
۱. ابتدا دیتای فروش را وارد پاور بی آی میکنیم.و از آنجایی که این دیتا؛ دیتای خام ماست یک فولدر به نام Raw Data ایجاد کرده و فایل را آنجا قرار می دهیم.و دکمه Enable load را خاموش میکنیم چرا که قرار نیست این دیتا در ریلودهای روتین ما وارد شود.
۲.یک رفرنس از دیتای اصلی میگیریم و دیتای سال های گذشته را از سال جاری جدا میکنیم. برای اینکار روی ستون تاریخ کلیک کرده و فیلتر براساس تاریخ تعریف میکنیم. در نمونه زیر دیتای سال گذشته را فیلتر کرده و به نام Old_Sales_Data ثبت کرده ایم.
۳.از دیتای اصلی یک رفرنس دیگر گرفته و این بار ستون تاریخ را روی سال ۱۴۰۳ فیلتر میکنیم. و این دیتا را به نام New_Sales_Data ثبت می کنیم.دو کویری Old ,New را در فولدری به نام Model ثبت می کنیم:
۴.دقت داشته باشید ما نیاز داریم تنها دیتای سال جاری در ریلودهای روتینمان ریلود شود و دیتای سوابق سالهای گذشته نیازی به ریلود ندارند چرا که تغییری در آنها ایجاد نمیشود.برای اینکار روی Old_Sales_Data راست کلیک کرده و گزینه Include in report refresh را برای آن غیرفعال می کنیم:
۵.بعد از تمیز کردن دیتا، با زدن بر روی دکمه Close & Apply اقدام به لود دیتا کنید. در هنگام ریلود هر دو جدول و اطلاعات آن واکشی میشود.حالا باید با استفاده از تابع UNION در DAX
اقدام به ایجاد یک جدول جدید کنیم که شامل اطلاعات قدیم و جدید باشد برای اینکار همانند تصویر زیر عمل میکنیم.
*دقت داشته باشید برای استفاده از تابع UNION باید حتما تعداد ستون ها و ترتیب آنها در هر دو جدول یکی باشد .
۶.در آخر از آنجایی که دیگر نیازی به دو جدول قدیم و جدید نیست؛ مطابق تصویر روی گزینه Hide کلیک کرده و آنها را پنهان می کنیم.
۷.کار تمام شد.
الان شما دیتایی ایجاد کردید که در آن تنها دیتای مربوط به سال جاری ریلود میشود و دیتای سال گذشته دیگر در صف ریلود قرار نمیگیرد در نتیجه زمان انجام ریلود شما به شدت کاهش می یابد. در این مثال از فیلد تاریخ استفاده شد شما در دیتابیس خودتان براساس دیتایی که دارید میتوانید
Incrimental Load
را طور دیگری تعریف کنید مثلا اگر یک سرویس خاصتان دیگر فروشی ندارد اما سوابق فروشی آن را نیاز دارید میتوانید یک کویری بنویسید و دیتای فروش آن سرویس را در آن قرار دهید و دیتای دیگرتان حاوی باقی سرویس ها باشد. در نهایت دو جدول خود را با
UNION به هم بچسبانید.میتوانید بیش از ۲ جدول هم ایجاد کنید مانعی برای اینکار وجود ندارد.
نتیجهگیری
پیادهسازی Incremental Load در Power BI ابزاری قدرتمند برای بهینهسازی مدیریت دادههای بزرگ و پویا است. با کاهش زمان بارگذاری و بهبود عملکرد، کاربران میتوانند گزارشهای بهروزرسانی شده را سریعتر دریافت کنند. این روش بهویژه برای کسبوکارهایی با دادههای در حال رشد ضروری است.
خانم مهندس جعفریان ،
ممنون از ارائه مطلب خوب شما و سایت مهندس پیروز عزیز !
پیشنهاد میکنم در سطح تاریخ سال جاری هم پیاده سازی کنید چون برای ترنزکشن های سال جاری نیز همواره چالش های بسیار وجود داره …
با توابع EXEPT و غیره امکان پذیر هست
ارادت