آموزش DAX در Power Bi قسمت دوم
در ادامه آموزش سریالی زبان DAX به آموزش DAX در Power Bi قسمت دوم می رسیم. در این قسمت به بررسی Data Model می پردازیم. نحوه عملکرد کد های DAX به طور کامل بستگی به مدل داده شما دارد. مدل سازی داده تعیین می کند که کد های شما به چه میزان پیچیده باشند و عملکرد آن ها چگونه باشد.
ابتدا قسمت اول این آموزش را مطالعه نموده و پس از آن با قسمت دوم با ما همراه باشید.
Data Model چیست؟
Data Model در واقع مجموعه ای از جداول و روابط هستند. جداول از مجموعه ای از سطر ها و ستون ها تشکیل می شوند که هر ستون حاوی یک ویژگی است که نوع داده ای (Data Type) خاصی را میزبانی می کند. به طور مثال جدول مشتری می تواند شامل یک ستون مانند جنسیت باشد. در واقع جنسیت یک ویژگی از جدول مشتری است.
یک جدول هم به خودی خود می تواند یک مدل داده ساده محسوب شود. مدل سازی لزوما یک کار عجیب و غریب و پیچیده نیست و می تواند به سادگی ایجاد یک جدول در اکسل باشد.
از طرفی دیگر، مدل داده می تواند شامل چندین جدول باشد که با روابط (Relationship) با هم ارتباط برقرار کرده اند. مدل سازی داده اگر چه کار پیچیده ای نیست اما می تواند به شما قدرت شگرفی در نوشتن کد های DAX ارائه کند.
اگر بر روی برچسب Data Modeling را در انتهای همین مطلب کلیک کنید به مطالب بسیار مفیدی خواهید رسید. آن ها را به دقت مطالعه کنید و قدم های ابتدایی خود را محکم بردارید.
روابط در Power BI
همان طور که در تصویر مشاهده می کنید معمولا روابط به صورت یک به چند هستند. طرف یک با عدد یک نمایش داده شده و طرف چند با علامت * نمایش داده می شود.
این رابطه بر اساس ستون های مشترک در دو جدول ایجاد می شود. توجه کنید که حتما و حتما ستون مشترک در طرف یک رابطه (سمت 1) باید دارای مقادیر یکتا باشد و گرنه این رابطه ایجاد نخواهد شد.
نحوه تشخیص سمت یک و چند به این ترتیب است که به ازای یک نمونه از جدول سمت 1، چندین نمونه در سمت چند رابطه وجود دارد. به طور مثال بین 2 جدول کالا و فروش رابطه یک به چند وجود دارد.
در واقع جدولی حاوی اطلاعات کالا داریم که هر ردیف اطلاعات یک کالا را در خود جای داده است. این جدول بدون تکرار است و نمی تواند دارای مقادیر Blank باشد. از طرفی به ازای هر کالا، چندین ردیف در جدول فروش ثبت شده است، چرا که هر کالا ممکن است چندین بار به فروش برسد. پس کالا سمت یک رابطه و فروش سمت چند رابطه قرار می گیرد.
همین طور برای گروه کالا و کالا یک رابطه یک به چند برقرار است. یعنی به ازای هر گروه کالا، چندین کالا ثبت شده است. پس کالا سمت چند و گروه کالا سمت یک رابطه است.
جهت رابطه بر روی روابط در واقع جهت فیلترینگ را نمایش می دهد. باید دقت داشته باشید که ویژگی های جدول سمت یک رابطه می توانند اعداد و ارقام جهت چند رابطه را برش بزنند.
به مثال زیر توجه کنید.
جنسیت یک ویژگی از جدول مشتریان (Customer) است. جدول مشتریان در سمت یک رابطه و جدول فروش در سمت چند رابطه قرار گرفته است. اعداد و ارقام مربوط به فروش مانند قیمت و تعداد کالای فروش رفته در سمت چند رابطه هستند. پس ویژگی های جدول مشتریان می تواند اعداد و ارقام موجود در جدول فروش را برش بزند.
کافی است ویژوالی انتخاب کرده و یک ویژگی از جدول مشتریان مانند جنسیت، سن، تحصیلات و … را به عنوان Dimension انتخاب کنید و ویژگی هایی از جدول فروش مانند تعداد فروش را در Value قرار دهید. همه چیز مطابق انتظار پیش می رود و تعداد فروش به تفکیک جنسیت نمایش داده می شود.
همان طور که در تصویر زیر مشاهده می کنید جهت روابط از سمت جدول مشتری به سمت جدول فروش است، پس جدول هر ویژگی از جدول مشتریان می تواند اعداد و ارقام جدول فروش را فیلتر کند.
دقت کنید لازم نیست جداول مورد نظر مستقیم به هم متصل باشند. کافیست روابط آن ها در یک امتداد باشند. به جدول گروه کالا (Category) دقت کنید. این جدول نیز می تواند اطلاعات جدول فروش را برش بزند چرا که تا جدول فروش رابطه در یک جهت حرکت می کند.
در واقع ویژگی های جدول گروه کالا به عنوان سمت یک رابطه با جدول زیر گروه کالا (Subcategory)، اطلاعات جدول زیر گروه کالا را برش می زند، حال جدول زیر گروه کالا خود به عنوان جدول سمت یک رابطه با جدول کالا، جدول کالا را فیلتر نموده و جدول کالا به عنوان سمت یک رابطه با جدول فروش، اطلاعات جدول فروش را برش می زند.
حال سعی می کنیم بر اساس یک ویژگی از جدول مشتریان، تعداد کالا ها را برش بزنیم. آیا این امر امکان پذیر است؟ آفرین! درست حدس زدید. این ممکن نیست. چرا که روابط آن ها در یک امتداد نیست.
نتیجه همان طور که در تصویر زیر مشخص است نمایش مقادیر یکسان به ازای سطوح شغلی مختلف است. عدد نمایش داده شده برای تمام سطح های شغلی عدد 606 است که برابر با تعداد کل کالا هاست. این بدین معنیست که ویژگی شغل از جدول مشتریان قادر به برش زدن جدول کالا نبوده است.
پس از جدولی که قرار است بر اساس ویژگی های آن فیلتر را انجام دهید شروع به حرکت کنید. تا زمانی که زنجیره 1 به چند در یک امتداد حرکت می کند برش زدن اعداد و ارقام امکان پذیر است. به محض عوض شدن جهت روابط، انتشار فیلتر متوقف می شود.
خب به پایان آموزش DAX در Power Bi قسمت دوم رسیدیم. حتما و حتما برچسب Data Modeling را در سایت دنبال کنید و مطالب مربوط به آن را مطالعه کنید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
سپاس از شما، برای بیان ساده و نکات کاربردی
سلام .. ممنون از همراهی شما
سلام
این مطلب در ظاهر ساده به نظر میاد اما در موقع کار با دیتای واقعی و طراحی داشبورد متوجه میشیم چقدر نکته کاربردی و مهمی است. ممنون از آموزشهای مفید شما.
سلام
ممنون از لطف شما