گروه بندی در Power BI با استفاده از DAX
گروه بندی عملی است که به واسطه آن داده ها را در گروه های مختلف دسته بندی می کنیم. به طور مثال رنگ ها را به گروه تیره و روشن و یا سن افراد را به دسته های جوان، میانسال و پیر گروه بندی می کنیم تا بینش بهتری از داده های خود داشته باشیم. در این مطلب با گروه بندی در DAX آشنا خواهیم شد.
در پست های قبل با گروه بندی با استفاده از ستون شرطی در Power Query و با استفاده از Grouping Feature در Power BI آشنا شدیم. حال با نحوه عمل گروه بندی در DAX آشنا خواهیم شد.
برای این منظور از داده های پایگاه داده Adventure Works استفاده می نماییم. با استفاده از ستون تاریخ تولد سن مشتریان را استخراج می نماییم . برای استخراج سن با استفاده از تابع DATEDIFF که دو تاریخ را دریافت نموده و اختلاف آن ها را بر حسب روز، ماه، سال که توسط ما اعلام می شود، برمی گرداند.
در واقع با استفاده از کد ستونی ایجاد می کنیم که سن هر مشتری از تاریخ آن روز کسر گردیده و اختلاف بر حسب سال را نمایش می دهد. حال جدولی تهیه می کنیم که بر حسب سن مشتریان میزان فروش را به تفکیک هر گروه کالا نمایش دهد.
همان طور که در تصویر مشاهده می نمایید جدول به شدت شلوغ بوده و تقریبا هیچ بینش خاصی به ما نمی دهد. نمایش چنین جدولی به هیچ وقت مناسب نمایش در داشبورد نمی باشد. از طرفی واقعا چه تفاوتی بین سن 36، 37 و 38 وجود دارد؟ لذا با عمل گروه بندی می توان به نتایج بهتری دست پیدا کرد. پس باید مشتریان را بر اساس سن به گروه های مختلف دسته بندی کنیم.
ایجاد ستون محاسباتی (Calculated Column)
قبلا در مورد تفاوت های Measure و ستون محاسباتی صحبت نموده ایم. اما به طور خلاصه بدانید که هنگامی که قصد استفاده از مقادیری در Slicer و یا سر ستون و سر ردیف های جدول را دارید باید برای آن ستون محاسباتی ایجاد کنید، چرا که با استفاده از Measure این کار امکان پذیر نمی باشد.
به طور مثال وقتی که می خواهید گزارش میزان فروش بر حسب رنگ های مختلف را ایجاد کنید باید ستون رنگ در مدل ما موجود باشد. پس طبیعتا وقتی می خواهیم گزارش میزان فروش را بر حسب گروه سنی نیز ایجاد کنیم باید ستون گروه سنی در مدل موجود باشد که این عمل با ایجاد ستون محاسباتی صورت می پذیرد.
برای ایجاد گروه بندی می توان از IF های تو در تو استفاده نمود. کد استفاده شده را در تصویر زیر مشاهده می نمایید.
در واقع این کد به این معنی است که افرادی که در ستون سن عدد کمتر از 18 برای آن ها ثبت شده در دسته کوچکتر مساوی 18 گروه بندی شوند در غیر این صورت اگر سن آن ها بین 18 تا 30 بود در دسته 18 تا 30 سال در غیر اینصورت اگر سن آن ها بین 30 تا 40 بود در دسته بین 30 تا 40 سال و به همین ترتیب گروه های مختلف سنی ایجاد می گردند.
این ستون محاسباتی بسیار خوب عمل می کند و نتایج آن در ستون AgeGroup قابل مشاهده است.
حال بر اساس این ستون گزارش خود را تهیه می نماییم.
همان طور که مشاهده می کنید این گزارش بسیار خلاصه بوده و اطلاعات مفید تری را به ما منتقل می نماید. به طور مثال به راحتی متوجه خواهید شد که افراد بین 30 تا 40 سال بیشترین خرید دوچرخه را از محصولات ما داشته اند.
مساله
اما مساله این است که این ستون اگر چه خوب عمل می کند اما نوشتن کد آن آسان نیست و در صورت داشتن گروه های زیاد وقت بسیاری از کاربر خواهد گرفت. راه بهتر ایجاد یک جدول کمکی حاوی اطلاعات گروه های مختلف است.
پس مطابق تصویر از زبانه Home و با استفاده از Enter Data جدول مورد نظر را ایجاد می نماییم.
در واقع 4 ستون برای جدول مورد نظر ایجاد نموده ایم. ستون AgeGroup نام گروه مورد نظر می باشد. ستون From و to محدوده هر گروه سنی را مشخص می نماید. شاید برای شما سوال پیش آید که ستون ID چه کاربردی دارد؟ پس با ما همراه باشید تا پاسخ سوال خود را بیابید.
ایجاد ستون محاسباتی
حال باید ستون محاسباتی زیر ایجاد کنید. در واقع با استفاده از این کد برای هر ردیف سن مشتری را چک می کند که در کدام محدوده جدول ایجاد شده قرار می گیرد. و همان یک ردیف را فیلتر نموده و نام گروه را برمی گرداند.
خروجی این کد در تصویر قابل مشاهده می باشد.
اگر تا اینجا با ما همراه مانده اید وقت این است که پاسخ سوال خود را دریافت کنید. کاربرد ستون ID چیست؟
گاهی اوقات پیش می آید که شما نام هایی را برای گروه های خود برمی گزینید. این نام ها هنگام استفاده در گزارش بر اساس حروف الفبا مرتب می شوند. در حالی که شما ترتیب خاصی برای آن ها در نظر دارید. پس این ستون ID به کمک شما می آید. شما باید یک ستون محاسباتی دیگر ایجاد نموده که عینا مانند ستون محاسباتی قبل است، اما به جای نام گروه ID را به عنوان خروجی نمایش می دهد. کد مورد استفاده و خروجی مورد نظر به صورت زیر می باشد.
حال بر روی ستون AgeGroup کلیک رده و آن را انتخاب می نماییم. از برگه Modeling گزینه Sort by Columns را انتخاب می نماییم. همان طور که مشاهده می کنید نحوه مرتب سازی این ستون بر اساس خود ستون قرار گرفته است.
ما باید نحوه مرتب سازی را بر اساس ID قرار دهیم که این عمل را در تصویر مشاهده می نمایید.
حال با استفاده از ستون های محاسباتی ایجاد شده بار دیگر گزارش مورد نیاز خود را ایجاد می کنیم.
جمع بندی
گاهی اوقات ایجاد گزارش بر اساس مقادیر پیوسته مانند سن نمی تواند بینش خاصی را به کاربر منتقل نماید. لذا می بایست عمل گروه بندی را برای آن انجام دهیم. این عمل در Power Query از طریق ایحاد Conditional Column قابل انجام است، همچنین گروه بندی از طریق Grouping Feature نیز قابل انجام است. عمل گروه بندی از طریق نوشتن کدهای DAX نیز قابل دستیابی است. اگر بخواهیم این عمل را با استفاده از DAX انجام دهیم دو روش پیش روی ماست. می توانیم این عمل را از با استفاده از IF انجام دهیم و همچنین می توانیم از طریق ایجاد جدول کمکی (Lookup Table) نیز این عمل را انجام دهیم. شما به فراخور نیاز خود می توانید از هر یک از این روش ها استفاده نمایید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقیمطالب زیر را حتما بخوانید
-
نمونه پروژه داده های اقتصادی با Power BI
427 بازدید
-
نمونه پروژه قند مواد غذایی با Power BI
540 بازدید
-
اولین مسابقه طراحی داشبورد با Power BI
1.03k بازدید
-
همه چیز در باره اسلایسر Slicer در Power BI
604 بازدید
-
دوره رایگان آموزش Power BI پاوربی آی
2.12k بازدید
-
پروژه مدیریت مواد اولیه و تولید با Power BI
5.73k بازدید