رابطه غیر فعال در پاور بی آی

رابطه غیر فعال در پاور بی آی چیست؟

ایجاد روابط تقریبا یک رکن ثابت تمام پروژه های Power BI هستند.

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

به عنوان مثال در پروژه ای که در ادامه مطرح می شود، یک جدول شامل ۱۰ فقره چک دریافتی داریم. مساله اینجاست که در این جدول با دو فیلد تاریخ صدور و تاریخ چک مواجه هستیم. حال فرض کنید بخواهیم مبلغ چک ها را بر حسب ماه نمایش دهیم. اولین سوال این است، آیا صحبت از کدام تاریخ صحبت می کنیم؟  پس از آن باید رابطه صحیح را در مدل داده ایجاد کنیم. مثلا می توانیم بین فیلد jalali_1 و Date1 رابطه ایجاد کنیم.

تا اینجا مساله کامل حل می شود. اما سوال دوم اینست. چنانچه بخواهیم دو نمودار داشته باشیم که در یکی جمع مبالغ چکها بر حسب تاریخ اول و در دومین نمودار جمع مبالغ چک ها بر حسب تاریخ دوم نمایش داده شود، راهکار چیست ؟

 

شاید برای حل این موضوع اولین ایده ای که به ذهن خطور کند، اینست که می توانیم مطابق شکل زیر از یک مدل داده با دو جدول DimDate  مشابه زیر استفاده کنیم

مدل داده مشابه شکل فوق ، هرچند ما را به جواب صحیح می رساند، اما مورد تایید نیست.

اما راهکار صحیح چیست ؟  بهترین حالت در چنین پروژه ای استفاده از یک رابطه غیر فعال در پاور بی آی است . رابطه غیر فعال دقیقا مشابه یک رابطه فعال ایجاد می شود. اما بین دو جدول امکان وجود بیش از یک رابطه فعال وجود ندارد. در نتیجه رابطه دوم به شکل خط چین نمایش داده می شود و به آن رابطه غیر فعال گفته می شود.

نحوه استفاده از رابطه غیر فعال در پاور بی آی

با استفاده از دستور userelation می توانیم رابطه مورد نظر خود را در فرمول استفاده کنیم. لازم به ذکر است که تابع userelation  غالبا در یک تابع دیگر نظیر calculate  استفاده می شود.

برای این منظور از DAX کمک می گیریم. آموزش استفاده از توابع DAX برای این منظور در زیر ارائه شده است.

فرض کنیم می خواهیم مبلغ چک ها را بر حسب ماه های سال بر اساس دو حالت تاریخ صدور و تاریخ چک در دو نمودار ترسیم کنیم.

برای این منظور می توانیم دو مژر  measure یا فیلد محاسباتی به شکل زیر را بکار گیریم.

 

فرمول دوم با در نظر گرفتن رابطه غیر فعال به شرح زیر است

 

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

جدول DimDate

جدول Relation

 

 

0 بدون دیدگاه

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

Want to join the discussion?
Feel free to contribute!

پاسخ دهید

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