بررسی و نحوه ایجاد مدل داده‌ای مناسب در Power BI

لینک ابزارهای مورد نیاز:

لینک ابزار : نسخه پاور بی آی دسکتاپ اکتبر ۲۰۲۰

 

https://download.microsoft.com/download/7/0/9/709CBE7F-2005-4A83-B405-CA37A9AB8DC8/PBIDesktopRS_x64.msi

 

لینک دیتابیس استفاده شده: دیتابیس AdventureWorksDW

 

https://docs.microsoft.com/en-us/sql/samples/adventureworks-install-configure?view=sql-server-ver15&tabs=ssms

 

مشکل

یکی از مشکلات اساسی و همچنین کند شدن نمایش گزارشات و سنگینی حجم فایل پروژه های Power BI و عدم پیاده سازی راحت فرمولهای پاور بی آی مربوط به عدم طراحی دیتا مدل مناسب در این محیط می باشد.
بهترین روش طراحی مدل داده ای در پاور بی آی مدل ستاره ای (Star Schema) می باشد، در این سند به شما آموزش می دهم که چگونه می توان مدلهای سیستم های عملیاتی (OLTP) را به این مدل مناسب تغییر داد.
در ابتدا یکسری مفاهیم اولیه را بررسی می کنم.

 

راه حل

آشنایی با مفاهیم مورد نیاز

  •  بعد Dimension

بُعد توضیحی / مرجعی درباره مقادیر قابل اندازه گیری (measurable) هستند ، در صورتی که بتوان منابع داده ای را در این دسته بندی قرار داد ، جدول مورد نظر بُعد می باشد.

    • چه کسی (who): مشتری ، کارمند
    • چه چیزی (what): محصول
    • زمان (when): تاریخ
    • کجا (where): شعبه، منطقه

 

  • قلم آماری Measure

به هریک از ویژگی های قابل اندازه گیری قلم آماری می گویند . (تعداد ، مبلغ و…)

 

  •  حقایق Fact

یک واقعیت ( Fact) بخشی از داده های شما هستند که نشان دهنده یک رخداد یا یک تراکنش / معامله خاص است ، مانند فروش محصول در منطقه و زمان خاص به افراد.
در واقع اطلاعاتی که در Fact وجود دارد شامل فیلد های خارجی (Foreign Key) به ابعاد و همچنین ستون های قابل اندازه گیری می باشد.

 

  • دل داده‌ای Star Schema

در این مدل داده ای سعی بر این است یک جداول Fact به همراه چندین بعد در اطراف آن پیاده سازی شود به صورتی که ابعاد به بعد های دیگر تجزیه نشوند.
در ادامه تصویری از مدل داده ای به صورت ستاره ای را مشاهده می‌کنید.

 

Star Schema

مدل ستاره ای Star schema

 

در مدل داده‌ای از نوع Star، ابعاد به صورت غیر نرمال De-Normalization پیاده سازی می‌شوند.

  • مزیت طراحی به صورت Star Schema چیست؟
    • در این روش رابطه (Relation) کمتری ایجاد می شود پس نوشتن کویری ساده تر و سریعتر است.

اما چگونه می توان به این شکل مدل داده ای رسید ؟ در دیتابیس AdvantureWorkDW جدول محصول (DimProduct ) با جدول زیر گروه محصول (DimProductSubCategory) و همجنین این جدول با جدول گروه محصول (DimCategory) در ارتباط است .

در واقع مدل داده ای ما به طور کاملتر این شکلی می باشد . (یا به عبارتی دانه برفی Snow Flake)

 

در مدل داده ای از نوع دانه برفی Snow Flake جداول به صورت نرمال شده Normalization وارد سیستم می شوند.

  • پیاده سازی ساختار بالا به صورت Star Schema در پاور بی آی

برای پیاده سازی ابتدا به محیط Power Query  رجوع می‌کنیم از منوی Home گزینه Transform Data را انتخاب می‌کنیم.

 

 

در مرحله بعد دو جدول DimSubCategory و DimProductCategory را به جدول DimProduct ، الحاق (Merge) می‌کنیم، در هر مرحله فیلدهای مورد نیاز را استخراج می‌کنیم.

 

 

در پنجره باز شده فیلد ProductSubCategoryKey از جدول DimProduct و جدول DimProductSubCategory را انتخاب می‌کنیم، نکته‌ای که هست باید نوع ارتباط (Join Kind) را از نوع Left Outer انتخاب کنیم چون همه‌ی محصولات زیر گروه ندارند.

 

 

 

وقتی که در این پنجره دکمه OK را کلیک می کنیم . فیلد جدید به جدول DimProduct اضافه می گردد.که از این پنجره می توان فیلدهای مورد نیاز را استخراج کرد.

 

 

در ادامه یک ارتباط دیگر با جدول DimCategory برقرار می کنیم و فیلد های مورد نیاز را استخراج می کنیم.

 

 

این عمل باعث شد فیلدهای مورد نیاز جداول DimProductCategory و DimProductSubCategory به صورت مجتمع داخل جدول DimProduct اضافه گردد، پس دیگر احتیاجی به این دو جدول نیست. آیا می توان این دو جدول را حذف کرد ؟ خیر، به خاطر اینکه جدول محصول با این دو جدول ارتباط (Join) دارد.
در حال حاضر با به روز رسانی داده (Refresh) هم جداول گروه محصول و زیر گروه محصول به روز رسانی می شوند و هم فیلدهایشان در جدول محصول وجود دارد . برای برطرف کردن مشکل بر روی جدول DimProductCategory و DimProductSubCtageory راست کلیک کرده و گزینه Enable Load را غیر فعال می کنیم.
با غیر فعال کردن گزینه Enable Load جداول به مدل داده ای بارگذاری نمی‌شوند و فضای Ram را اشغال نیز نمی‌کنند، نکته‌ای که هست داده‌ها داخل آن با هر بار رفرش به روز رسانی می‌شوند.

 

 

در نهایت به مدل داده ای Star Schema رسیدیم.

 

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *