سید علی موسوی نژاد
سید علی موسوی نژاد
خواندن ۶ دقیقه·۲ سال پیش

رتبه‌بندی، در محیط نرم‌افزار Power BI

نرم افزار Power BI جزو نرم‌افزارهای تحلیل داده در حوزۀ تجاری هست، که برای جمع آوری، آنالیز، مصورسازی داده‌ها و به اشتراک‌گذاری داشبوردها بین کاربران کسب و کار استفاده می‌شه.

یکی از فیلدهای مهمی که در داشبوردها باید نمایش داد، رتبه‌بندی دلخواه بر روی مقادیر است. که در این نرم افزار به انواع مختلف میشه انجامش داد. من برای رتبه‌بندی‌های دلخواه کاربر در power BI به چالش‌هایی برخوردم که برای بعضیاش تونستم راه حلی پیدا کنم. لذا اینجا 4 نوع از این رتبه‌بندی‌ها (که عنوانش رو خودم با توجه به عملکردش نوشتم و لزوماً به این اسم شناخته شده نیست) و راه‌هایی که برای اون بلد هستم میگم تا شاید برای شما هم مفید باشه و بتونید استفاده کنید.

در پایان هم گریزی به دیدگاه یک صاحب‌نظر در علم مدیریت می‌زنم، که از نظر من افرادی که در حوزه تحلیل، با ارزیابی موجودیت‌هایی درگیر هستند که «روابط انسانی» در آن نقش کلیدی دارد، باید حداقل نگاهی بدون جانبداری، به این نوع نظرات بیاندازند.

چهار حالت رتبه‌بندی، در Power BI

1- رتبه‌ی استاتیک در مرجع دیتا؛ در این حالت، رتبه‌بندی قبل از ورود به محیط Power BI، در منبع داده صورت می‌پذیرد. یعنی مثلاً وقتی از اکسل داده می‌گیریم، در فایل اکسل رتبه‌بندی (مثلا با استفاده از تابع rank.eq) انجام شده باشه و رتبه‌ها را هم مثل بقیه داده به Power BI وارد کنید. در اینصورت در visualization هم رتبه را همانند دیگر داده‌ها به فیلدها اضافه می‌کنید.

  • مشکل این رتبه‌بندی این هست که ارزش رتبه ها ثابت هستند، و شما رتبه‌بندی را با دسته‌بندی (یا فیلتر‌های) دلخواه کاربر نمی‌تونید تغییر بدید.

2- رتبه‌بندی گروهی استاتیک (تک لایه): گاهی ممکن است ما نیاز داشته باشیم که داده خام را از منبع بگیریم و بصورت گروه‌بندی شده رتبه‌بندی استاتیک کنیم، که در خروجی برای هر رکورد دلخواه، یک رتبۀ ثابت، با گروه‌بندی دلخواه، تخصیص داده شود.

  • مثال: در جدول زیر 2 تیم ارزیابی داریم. هر تیم شامل گروه‌هایی است که نمره‌ی مخصوص خود را دارند. هدف ما رتبه‌بندی هر گروه، در تیم خود است، که خروجی آن قابل مشاهده است؛
جدول رتبه‌بندی گروهی تک لایه
جدول رتبه‌بندی گروهی تک لایه

یکی از روش‌های جالب برای این هدف رو در سایتی که لینکش رو می‌فرستم دیدم، که در محیط Power Query در قالب مراحل زیر قابل اجراست:

  • گام 1- مرتب‌سازی نمرات از زیاد به کم (این گام در سایت اشاره نشده، ولی اگر انجام ندهیم، رتبه‌بندی اشتباه می‌شود. زیرا این روش در نهایت منجر به نوعی شماره‌گذاری سطرها می‌گردد، لذا اگر داده‌ی کوچکتر هم ردیف اول باشد، شماره رتبۀ 1 می‌گیرد)
  • گام2- Group By روی ستون تیم، با حالت All Rows
  • گام 3- اضافه کردن ستون جدید با فرمول؛

Table.AddIndexColumn([Count],"Rank",1,1)

  • گام 4- حذف همه ستون‌ها به جز ستون اضافه شده
  • گام5- Expand همه ستون‌های مورد نظر از ستون اضافه شده

https://www.analytics-tuts.com/ranking-by-groups-using-power-query-in-power-bi/

3- رتبه‌بندی گروهی استاتیک (چند لایه): در این روش، ما همانند حالت قبلی نیاز به رتبه بندی گروهی داریم، با این تفاوت که گروه‌ه‌بندی در چند لایه مد نظر است.

  • مثال: سه کشور ایران، هند و اوکراین را مورد بررسی قرار می‌دهیم. که در هر کشور تعدادی شهر را مشخص کرده و در هر شهر تعدادی دانشگاه را انتخاب می‌کنیم. هدف ما رتبه بندی نمرات دانشجویان، در دانشگاه‌های شهر خود است:
جدول رتبه‌بندی گروهی دو لایه (کشور و شهر)
جدول رتبه‌بندی گروهی دو لایه (کشور و شهر)

برای این هدف نیز گام‌های روش قبل را باید در Power Query طی کنیم، با این تفاوت که در Group by در حالت Advenced، به ترتیب، فیلد کشور و شهر را اضافه می‌کنیم. در واقع تا لایه‌ای باید انتخاب کرد که لازم است رتبه‌بندی در آن سطح نمایش داده شود (اینجا، در سطح شهر بود)

تا در محیط visualization به نمایشی مانند شکل‌های زیر برسیم:

رتبه‌بندی گروهی دانشجو در سطح شهر (بدون فیلتر اسلایسر)
رتبه‌بندی گروهی دانشجو در سطح شهر (بدون فیلتر اسلایسر)


رتبه‌بندی گروهی دانشجو در سطح شهر خارکف از کشور اوکراین
رتبه‌بندی گروهی دانشجو در سطح شهر خارکف از کشور اوکراین


رتبه‌بندی گروهی دانشجو در سطح شهر کی‌یف از کشور اوکراین
رتبه‌بندی گروهی دانشجو در سطح شهر کی‌یف از کشور اوکراین


4- رتبه‌بندی داینامیک در visual: یکی از روش‌های اصلی در انواع رتبۀ داینامیک، استفاده از تابع Rankx در زبان DAX هست. این measure نکاتی داره که اگر رعایت نشه نمایش درستی از رتبه نخواهید داشت. یکی از نکاتش اینه که شما در آرگومان اولش که جدول مرجع رو معرفی می‌کنید، باید از تابعی استفاده کنید که فیلتر ستون یا ردیف جدولتون رو حذف کنه (یعنی توابعی مانند All یا Allselected).

در این حالت، مثلاً اگر بخواهیم نمرات افراد کلاس را رتبه‌بندی کنیم، از یک فیلتر اسلایسر در محیط visual، ممکن است برای علی رتبۀ 1 و از فیلتر دیگری ممکن است برای علی رتبۀ 5 خروجی بگیریم.

  • اینجا مسئله‌ اینه که با هر فیلتر که، برای مثال در اسلایسرها، اعمال می‌کنید رتبه‌ها آپدیت می‌شن (البته اگر مژرش رو درست نوشته باشیم)، یعنی برای مثال اگر اسلایسر شما فیلتر کنه و 10 ردیف از یک ماتریس نمایش داده بشه، رتبه‌بندی روی مقادیر فیلتر شده، از 1 تا 10 و اگر 100 ردیف فیلتر بشه، رتبه‌بندی مقادیر فیلتر شده مجدداً از 1 تا 100 انجام میشه (نکتش اینه که در هر بار فیلتر، عملیات رتبه‌بندی دوباره صورت می‌گیره).
  • در ادامه خروجی نمایش مثال قبل، با این حالت رتبه‌بندی قابل مشاهده است:
رتبه‌بندی داینامیک با استفاده از  Rankx_ فیلتر نمایش کلی
رتبه‌بندی داینامیک با استفاده از Rankx_ فیلتر نمایش کلی


رتبه‌بندی داینامیک با استفاده از  Rankx_ فیلتر کشور اوکراین
رتبه‌بندی داینامیک با استفاده از Rankx_ فیلتر کشور اوکراین


رتبه‌بندی داینامیک با استفاده از  Rankx_ فیلتر شهر خارکف کشور اوکراین
رتبه‌بندی داینامیک با استفاده از Rankx_ فیلتر شهر خارکف کشور اوکراین


در نهایت امیدوارم این تقسیم‌بندی و روش‌ها برای کاربران Power BI مفید باشه. احتمالاً راه‌های دیگه‌ای که حتی شاید ساده‌تر هم باشه، وجود داره و خوشحال میشم که با راهنمایی شما بتونم روش‌های بیشتری یاد بگیرم.

و اما گریز پایانی، که با موضوع رتبه‌بندی مرتبط است

پس از شرح روش‌های رتبه‌بندی در یک نرم‌افزار تحلیل داده، لازم به اشاره است که در هر گونه ارزیابی که از شاخص رتبه در میان منابع انسانی و یا موجودیت‌های متشکل از روابط انسانی (مانند یک شرکت)، استفاده می‌کنیم، باید به این نکته توجه کرد که؛ باید ازریابی عملکرد نیروی انسانی (رویکرد نئوکلاسیک) با ارزیابی کارکرد ماشین‌‌ (رویکرد مدیریت کلاسیک) متفاوت باشد!

در حوزۀ تحلیل، مینتزبرگ به مطالب ارزشمندی در کتاب «قصه‌های شب برای مدیران» اشاره می‌کند که در نظرات تئوریزیسین‌های دیگری که به نظریه‌های روابط انسانی و سیستمی گرایش بیشتری دارند، نیز قابل مشاهده است. مینتزبرگ در این کتاب اینطور می‌نویسه:

ماهیتی نرم، زیر پوسته‌ی داده‌های سخت
«اگر به دنبال استعاره‌ی خوب برای توصیف داده‌ها هستید، به ابرها در آسمان نگاه‌کنید؛ ابرها از دور کاملاً واضح هستند، اما از نزدیک مبهم و تار می‌شوند، گویی چیزی برای حس کردن وجود ندارد! «سخت‌ بودن» داده‌ها توهم تبدیل شدن چیزهای واقعی به عدد است. «سخت بودن» نیز مانند ابرها توهمِ از دور است که در آن قرار است وقایع به داده‌های آماری شفاف، عینی و بی‌طرف تبدیل شوند»

مینتزبرگ میان رهایی از داده‌های سخت (اندازه‌گیری و تحلیل‌های عددی) و رهایی از داده‌های نرم (قضاوت‌های حاصل از تجربه) تفاوتی قائل نیست، از این جهت که هر دو منجر به یک تحلیل ناقص و حتی اشتباه می‌گردد. او پیشنهادی دارد، که با اغلب سیستم‌های ارزیابی ما مغایر است (البته قطعاً یکی از دلایل این مغایرت، فرهنگ کاری ماست)؛ پیشنهاد او برای یک تحلیل شفاف ترکیب داده‌های سخت (مانند داشبوردهای گزارش عددی) و داده‌های نرم (همانند قضاوت حاصل از تجربه) است!

...پس برای این که بفهمید چه اتفاقی در حال رخ دادن است، کمی به دنیای واقعیت، یعنی همان جایی که فعالیت اصلی سازمان رخ می‌دهد، نزدیک شوید. به عبارت دیگر، اندازه‌گیری را صرفاً مکمل در نظر بگیرید...


با آرزوی موفقیت و پیشرفت روزافزون برای شما عزیزان

تحلیل دادهpower biرتبه‌بندیمینتزبرگارزیابی عملکرد
دانشجوی دکتری مدیریت صنعتی - کارشناس ارزیابی عملکرد منابع انسانی
شاید از این پست‌ها خوشتان بیاید