برقراری رابطه با استفاده از کلید ترکیبی در Power BI
در Power BI و اکثر نرم افزار های هوش تجاری امکان برقراری رابطه بین جداول وجود دارد. روابط به منظور ایجاد گزارش ها با استفاده از چندین جدول استفاده می شوند و معمولا ایجاد گزارش ها را بسیار کارا می کنند و تعامل میان گزارشات را ممکن می سازند به نحوی که انتخاب عناصری از یک گزارش باعث فیلتر شدن دیگر گزارشات می شود. اما محدودیتی که برای ما در Power BI وجود دارد عدم امکان ایجاد کلید ترکیبی برای یک جدول است. در واقع ایجاد کلید ترکیبی با استفاده از چندین ستون که معمولا در پایگاه داده های رابطه ای امکان پذیر است در Power BI امکان پذیر نمی باشد. در این مطلب نمونه ای از ایجاد کلید ترکیبی را با هم خواهیم آموخت.
چالش
فرض کنید جدولی داریم که در آن میزان بودجه و سال و ماه ذخیره شده است. جدول بودجه را در شکل زیر مشاهده می نمایید.
همان طور که می دانید بُعد زمان (Date Dimension) یکی از مهمترین موارد مورد نیاز در اجرای یک پروژه هوش تجاری است. لذا یک Date Dimension نیز به پروژه اضافه می کنیم. تصویری از DimDate را مشاهده می کنید.
DimDate حاوی اطلاعات تمامی روزها از چندین سال است. در واقع هر ردیف از جدول حاوی اطلاعات 1 روز از یک سال خاص می باشد. به طور مثال ردیف اول با کلید 20100701 نمایانگر سه شنبه، اول ماه july در سال 2010 می باشد. که اطلاعاتی از قبیل نام ماه، شماره ماه، شماره فصل، نیم سال، سال و … از آن در قالب ستون های مختلف استخراج شده است.
آیا می توانید بین این دو جدول رابطه برقرار کنید؟ قطعا خیر! چرا که ستون های سال و ماه در هیچ کدام از جداول یکتا نیست. حتما می دانید برای ایجاد رابطه در Power BI باید حتما یکی از طرفین رابطه یکتا باشد. به طور مثال برای ایجاد رابطه بر اساس ستون سال باید ستون سال در یکی از جداول مقادیر یکتا داشته باشد. در حالی که هیچ کدام از ستون های روز، ماه و سال در هیچ کدام از 2 جدول یکتا نیستند و مقادیر تکراری دارند.
برای این منظور فرض می کنیم بودجه ها همگی در اول ماه تعیین می شوند. لذا عدد یک را به عنوان یک ستون به تمامی ردیف های جدول بودجه به عنوان چندمین روز ماه اضافه می کنیم.
برای این منظور به Edit Queries می رویم.
از سربرگ Add Column گزینه Custom Column را انتخاب می کنیم.
در پنجره باز شده عدد یک را وارد کرده تا عدد به کلیه ردیف ها اضافه شود.
جدول نهایی به شکل زیر در خواهد آمد.
در حال حاضر دو جدول 3 ستون مشترک دارند. سال، ماه و روز در هر دو جدول مشترک است. حال اگر قصد داشته باشیم بین هر یک ازاین 3 ستون مشترک رابطه برقرار کنیم با اخطاری مواجه می شویم که این ستون ها در هیچ کدام از جداول یکتا نیستند و در صورت برقراری رابطه، رفتار چند به چند (Many to Many) خواهند داشت که مد نظر ما نیست.
راه دوم استفاده از هر 3 ستون به عنوان کلید ترکیبی است. این عمل در Power BI امکان پذیر نمی باشد، این در حالیست که در پایگاه داده رابطه ای این امکان وجود دارد. به طور مثال فرض کنید شماره شناسنامه افراد یکتا نباشد و در هر سال تکرار می شود. می توان از دو ستون سال و شماره شناسنامه به عنوان کلید استفاده کرد. در واقع در این روش 2 ستون به عنوان کلید معرفی می شود، که در Power BI امکان پذیر نیست.
راه حل
مشکل ما انتخاب چندین ستون به عنوان کلید و برقرای رابطه بین آن هاست، کاری که در Power BI امکان پذیر نمی باشد. اما راه حل چیست؟ درست است که ما امکان برقراری رابطه بین چند ستون را نداریم، اما امکان Join کردن جداول بر اساس چندین ستون وجود دارد.
پس مطابق تصویر زیر به Edit Queries می رویم، و روی جدول Budget کلیک کرده و گزینه Merge را انتخاب می کنیم.
محیطی مشابه تصویر زیر برای ما باز می شود و از ما می خواهد تعیین کنیم که عمل Merge بر اساس چه ستون هایی صورت پذیرد. ستون های مورد نظرمان را به ترتیب انتخاب می کنیم (اینکار با کمک کلید Ctrl انجام می شود). ستون های مورد نظر ما به ترتیب سال، ماه و روز است. مطابق تصویر زیر عمل Merge را انجام می دهیم.
پس از انجام عمل Join یا همان Merge ستونی به جدول Budget اضافه می شود و از ما می خواهد تعیین کنیم چه ستون هایی به این جدول اضافه شود. ما از تمامی انتخاب های موجود تنها ستون DateKey را انتخاب می کنیم چرا که می خواهیم رابطه را بر اساس این ستون برقرار کنیم. پس مطابق تصویر زیر عمل می کنیم.
در نهایت ستون دلخواه ما مطابق تصویر به جدول اضافه می شود.
حال به راحتی می توانیم بر اساس ستون DateKey بین دو جدول رابطه برقرار می کنیم. در تصویر زیر این عمل را مشاهده می کنید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقیمطالب زیر را حتما بخوانید
-
داده های نمونه و تمرینی برای یادگیری پاور بی آی | Power BI
138 بازدید
-
تنظیم مقدار پیش فرض اسلایسر تاریخ در Power BI
111 بازدید
-
دومین مسابقه بزرگ Power BI ایران
238 بازدید
-
نمونه پروژه داده های اقتصادی با Power BI
645 بازدید
-
نمونه پروژه قند مواد غذایی با Power BI
732 بازدید
-
اولین مسابقه طراحی داشبورد با Power BI
1.26k بازدید
سلام و تشکر از مطلب بسیار آموزندتون، فکر میکنم در مثال بالا باید گزینه فراپیوند راست را انتخاب کنیم یا جداول را بر عکس بزاریم..چون در ستون جدید budget میزان null به وجود میاد که این اشتباه است..یادمان باشد در ستون data key جدول budget نباید میزان null وجود داشته باشد.
واقعا آموزنده و عالی.سپاس از اینهمه زحمت