خانه / آموزش Power BI بابازاده / درس چهل و سوم – رسم دیتا مدل

درس چهل و سوم – رسم دیتا مدل

رسم دیتا مدل

یکی از مهمترین مراحل بی آی طراحی دیتا مدل می باشد. وقتی همه جداول Fact و جداول Dimenssion را طراحی کردید باید در پاور بی آی به صفحه Model view رفته و ارتباط جداول را مشخص کنید.

دیتا مدل به نحوه ارتباط جداول و یا موجودیت ها با یکدیگر گفته می شود. این مرحله بسیار مهم می باشد یعنی بعد از مرتب و clean کردن دیتاها در پاور کویری باید حتما دیتا مدل خود را طراحی کنید، در واقع قبل از رسم ویژوال ها باید دیتا مدل شما رسم شده باشد. اگر ارتباط میان موجودیت ها به خوبی تنظیم نشود گزارشات شما به درستی انجام نخواهد شد. و فرمول های Dax شما اشتباه جواب خواهد داد.

در صفحه دیتا مدل وقتی روی یک جدول کلیک کنید قسمت properties نمایش داده می شود که میتوانید نام جدول و یا توضیحاتی تایپ کنید. در قسمت description می توانید توضیحات مورد نیازتون را بنویسید که بسیار کاربردی می باشد.

model view

Is hidden : اگر فعال کنید جدول مورد نظرتون در صفحه report view به کاربر نشان داده نمی شود. ولی داخل Model view میبینید. وقتی کاربرد دارد که به فرض جدولی دارید که هنوز تکمیل نشده و نباید در ویژوال استفاده کرد بدین ترتیب می توانید از دید مخفی کنید.

برای دیدن کل مدل بهتر است دکمه zoom out را بزنید که همه جداول موجود را ببینید. برای مثال در این دروه آموزشی از دیتا بیس AdventureworkDW استفاده می کنیم.

یکی از بهترین طراحی ها این است که جداول dimension را بالا قرار دهید و جداول fact را پایین بگذارید. در اینصورت اگر جداول fact  شما زیاد شوند به راحتی می توانید ارتباطات را شکل دهید و گیج کننده نخواهد شد.

model

نکته بسیار مهم این است که زمانی که ویژوال شما اطلاعات را بصورت تکراری نشان می دهد مثلا مقدار فروش همه ماه ها را یکسان نشان می دهد و نتیجه یک محاسباتی را به صورت تکراری نشان می دهد به احتمال خیلی زیاد ارتباطات مدل شما درست نمی باشد. و در غیر اینصورت Measure به درستی محاسبه نشده است.

برای ایجاد ارتباط بین دو جدول از تب home دکمه Manage relationships را بزنید. در صفحه ای که باز می شود می توانید تمام ارتباطات دیتا مدل خود را تعریف یا تغییر دهید.

manage relationship

دکمه new را زده تا صفحه create relationship باز شود. می خواهیم دو جدول DimDate و FactInternetSales را به هم متصل کنیم. دقت کنید بعد از انتخاب نام جدول حتما باید ستون مشترک را انتخاب کنید. در جدول DimDateشمسی ستون مورد نظر ما calenderDateNumber می باشد.

دقت کنید ستونهای کلید اصلی و کلید خارجی باید ستونهای عددی باشند و در ضمن یونیک باشند. به ستون کد اصلی در هر جدول کلید اصلی گویند و وقتی این ستون در جدول دیگری قرار میگیرد کلید خارجی گفته می شود.

create relationship

Cardinality : نوع ارتباط را مشخص می کند که اگر One to many را انتخاب کنید یعنی جدول بالا سمت one و جدول پایین سمت many قرار دارد.

انواع ارتباط در بانکهای اطلاعاتی :

One to one

One to many

Many to many

سه مدل ارتباط داریم که در مدل های بی آی  بیشتر از one to many استفاده می کنیم. بعنوان مثال یک مشتری می تواند n تا رکورد فروش برایش در جدول فروش ثبت شود. بنابراین جدول مشتری سمت one میباشد و جدول فروش سمت Many .

دقت کنید power bi desktop rs ارتباط many to many را ساپورت نمی کند. تا حد امکان از این ارتباط استفاده نکنید.

Cross filter direction : single بگذارید.

Make this relationship active : تیک بزنید جهت فعال بودن آن ارتباط

در پاور بی آی بین دو جدول فقط یک ارتباط اکتیو می تواند وجود داشته باشد. در نهایت ok را زده تا ارتباط به شکل زیر رسم می شود.

model view

پاور بی ای بطور هوشمند در جداول ستون هم نام که هم از نظر دیتا تایپ و هم از نظر نام بهم میخورن را بهم اتصال می دهد. ولی به این ارتباطات اتوماتیک اطمینان نکنید و همه ارتباطات را بررسی کنید.

اگر روی هر ارتباطی دوبار کلیک کنید صفحه edit relationship باز می شود که می توانید اصلاح کنید.

edit relationship

در مثال AdventureworkDW جدول اهداف به نام FactSaleQuota می باشد. که در این جدول گفته شده که در آخر هر ماه هر کارمندی چقدر باید فروش داشته باشد. از آنجایی که این جدول ماهانه رکوردهای زیادی به آن اضافه می شود و جنبه تحلیلی دارد بعنوان Fact در نظر گرفته می شود. روی این جدول راست کلیک کرده و manage relationship را بزنید و روابط را مشخص کنید.

create relationship

در فروش های اینترنتی حرفی از فروش شعبه و کارمند نیست زیرا فروش بصورت اینترنتی می باشد.

در مبحث BI به جداول dimension که بین جداول fact مشترک هستند conformed dimensson می گویند که در مثال زیر جدول dimdate می باشد. هر چقدر تعداد این جداول بعد مشترک بیشتر باشد توان تحلیلی بیشتری خواهید داشت.

model view

به ویژوال رسم شده در شکل زیر دقت کنید، این ویژوال دو ایراد دارد اول اینکه ترتیب ماه ها درست نیست و دوم اینکه در ستونها گزینه blank وجود دارد. دقت کنید اگر در سیستم blank داشتید که مقدار داشت باید حتما بررسی کنید، ممکن است در سیستم oltp باگ وجود داشته باشد.

visual

برای درست کردن ترتیب ماه ها باید به دیتا مدل رفته، ستون shamsimonthname را انتخاب کرده و از تب modeling گزینه sort by column را می زنید و shamsimonthnumber  را کلیک کنید. با این کار باید ویژوال مورد نظر مرتب گردد. اگر همچنان ماه ها در ویژوال مرتب نشده بود روی منوی more option ( همان سه نقطه) کنار ویژوال کلیک کرده و گزینه sort by را زده و shamsimonthname را انتخاب کنید. یعنی بر مبنای این ستون مرتب کن. و همچنین صعودی و نزولی را مشخص کنید.

sort by column

در مثال زیر فروش را در کنار هدف هر ماه می توانید مشاهده کنید. در اینجا محور مقدار هدف و فروش که جداول fact هستند را در value قرار می دهیم و axis باید محور مشترک باشد که در این مثال ماه می باشد. دقت کنید که می توانید با یک اسلایسر سال را انتخاب کنید. و با استفاده از دستورات Dax می توانید مشخص کنید به چند درصد از هدف رسیده اید.

visual

اگر بخواهید فروش یک ماه را در چند سال بررسی کنید بهتر است به شکل زیر انجام دهید که در قسمت legend سال ها را قرار دهید. برای فیلدهای پیوسته مثل زمان بهتر است از ویژوال line chart و area chart استفاده کنید.

نمودارهای میله ای برای مقادیر ناپیوسته بیشتر کاربرد دارد.

line chart

به ترتیبی که گفته شد باید ارتباط همه جداول را مشخص کنید اگر در هتگام mange relationship به شما خطای کلید داد و گفت باید مقادیر کلید شما یونیک باشد حتما به صفحه edit query رفته و ستون مورد نظر را بررسی کنید.

توجه کنید اگر کنار ستون هم حروف الفبا و هم اعداد باشد یعنی پاور کوئری نتوانسته تایپ آن ستون را تشخیص دهد و شما باید خودتان تایپ ستون اصلی را whole number تعریف کنید. بعد از تعریف تایپ ستون مورد نظر می توانید از تب view گزینه column quality را زده تا وضعیت ستون را مشاهده کنید تا مقدار valid، error و empty را نشان دهد. همانطور که قبلا گفتیم error زمانی رخ می دهد که مقدار ستون با دیتا تایپ ستون همخوانی نداشته باشد. برای حذف error باید راست کلیک کرده روی ستون مورد نظر و remove error را بزنید. در کتاب رضا راد مبحث error handeling را مطالعه کنید زیرا خیلی وقتها نباید error ها را حذف کرد. زیرا وقتی حذف می کنید کل ردیف پاک می شود و مقداری اطلاعات را از دست می دهیم.

برای داده های پرت بهتر است با کارفرما صحبت کنید و طبق نظر کارفرما تغییرات را لحاظ کنید.

برای ایجاد ریلیشن از روش drag & drop هم می توانید استفاده کنید یعنی از جدول dimenssion فیلد مورد نظر را با موس گرفته و روی جدول fact  و روی ستون مورد نظر بیندازید البته این روش مناسب نیست زیرا ممکن است اشتباه انجام شود.

دقت کنید دیتا مدلی که در پاور بی ای داریم تا حدودی شبیه به مدل تبولار می باشد یعنی بین هر دو جدول فقط یک ارتباط اکتیو وجود دارد. و این مدل رابطه ای اصلا شبیه به مدل ریلیشن موجود در sql server نمی باشد.

از آنجایی که برای آموزش از دیتای AdventureworkDW استفاده کردیم در شکل زیر دیتا مدل آن را رسم کرده ایم.

model view

درباره‌ی حمیدرضا بابازاده

تحلیلگر ارشد و متخصص هوش تجاری در اتریش هستم و تجربه کار بعنوان مشاور و مدرس BI در شرکتهای مختلف رو دارم . بیش از 1300 ساعت سابقه تدریس دوره های Python , Power BI و Microsoft BI را در آموزشگاه سماتک و مجتمع فنی تهران دارم .

همچنین ببینید

درس هفتاد و پنجم – دوره ای بر Filter Context

در جلسات قبل آموختیم که : ستون محاسباتی بعد از تولید شدن داخل Data Model …

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

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

معادله امنیتی (فقط عدد بنویسید) *