تحلیل داینامیک پارتو Pareto در Power BI
این مقاله نحوهی پیادهسازی یک محاسبهی داینامیک پارتو در Power BI را بر اساس یک معیار (Measure) قابل انتخاب از طریق slicer و با قابلیت فیلتر شدن داینامیک توسط سایر slicerهای موجود در گزارش، توضیح میدهد.
تحلیل پارتو یک تکنیک تحلیلی است که برای شناسایی مؤثرترین عناصر در یک مجموعه داده استفاده میشود. این تحلیل بر اساس اصل پارتو بنا شده است که بیان میکند درصد کوچکی از علل معمولاً منجر به درصد بزرگی از نتایج میشوند. به عنوان مثال، طبقهبندی ABC در الگوهای DAX نیز بر پایهی اصل پارتو بنا شده است. با این حال، پیادهسازیهای معمول اغلب با محدودیتهایی مواجه هستند. تحلیل بر اساس اصل پارتو معمولاً از محورهای دستهای (categorical) مانند نام مشتری یا شناسهها استفاده میکند، که این موضوع استفاده از محور پیوسته (continuous) در نمودار خطی Power BI را غیرممکن میسازد. یک محور دستهای، زمانی که تعداد نقاط داده زیاد باشد، باعث ایجاد نوار پیمایش (scrollbar) در نمودار خطی میشود و این موضوع توانایی مقایسه توزیع نقاط داده در دستههای مختلف را در یک نمودار خطی محدود میکند.
این مقاله نشان میدهد که چگونه میتوان با معرفی یک محور عددی که موقعیت هر آیتم را بر اساس معیار انتخابشده منعکس میکند، بر این محدودیت غلبه کرد. این کار نیاز به محاسبهای کاملاً داینامیک دارد که همچنین ویژگیهای زیر را ارائه میدهد:
امکان انتخاب داینامیک معیار (مانند مبلغ فروش، حاشیه سود) از طریق slicerها.
پشتیبانی از فیلترگذاری تعاملی از طریق سایر slicerها (مانند برندهای محصول).
امکان بصریسازی مقایسهای توزیع پارتو در کشورهای مختلف درون یک نمودار واحد.
نتیجهی این پیادهسازی، توانایی ایجاد نمودارهای خطی مانند نمونههای زیر است که توزیع تجمعی مشتریان در کشورهای مختلف را بر اساس معیاری که کاربر انتخاب کرده مقایسه میکنند.

برای نشان دادن اهمیت استفاده از محور X عددی و پیوسته، در اینجا نتیجهی یک تحلیل کلاسیک پارتو با استفاده از محور دستهای (categorical) که نام مشتری را نشان میدهد آمده است: زمانی که تنها یک کشور انتخاب شده باشد، میتوان مشتریانی را که برای رسیدن به ۸۰٪ از مبلغ کل لازم هستند مشاهده کرد، اما فقط زمانی که تعداد آنها کم باشد. در غیر این صورت، باید از نوار پیمایش (scroll bar) استفاده کنید.

زمانی که چند کشور به طور همزمان انتخاب میشوند، نمودار خطی عملاً بیفایده میشود؛ زیرا مشتریان کشورهای مختلف به هم متصل نمیشوند و بدون استفاده از نوار پیمایش (scroll bar)، فقط تعداد کمی از مشتریان قابل مشاهده خواهند بود.

بنابراین، ما یک جدول جداگانه (Disconnected Table) ایجاد میکنیم تا به عنوان محور عددی پیوسته برای نمودار خطی عمل کند و سپس Measureهایی پیادهسازی میکنیم که با توجه به موقعیت فعلی روی این محور، مقادیر صحیح را نمایش دهند.
ایجاد محور عددی داینامیک
ما یک جدول محاسبهشده (Calculated Table) ایجاد میکنیم تا به عنوان محور عددی پیوسته عمل کند. این جدول از عدد ۱ تا حداکثر تعداد مشتریان شمارهگذاری میشود:

از این جدول میتوان به عنوان یک محور پیوسته در نمودار خطی استفاده کرد. جدول محاسبهشدهی X_axis باید بهعنوان یک جدول قابل مشاهده در مدل semantic گنجانده شود؛ با این حال، نباید هیچ رابطهای با سایر جداول برقرار کند.

پیادهسازی معیارهای Measure داینامیک
ما یک جدول به نام Metric ایجاد میکنیم که شامل فهرستی از Measureهایی است که کاربر میتواند برای تحلیل پارتو انتخاب کند:


ما همچنین یک Measure به نام Metric Value ایجاد میکنیم تا مقدار معیاری را که کاربر انتخاب کرده است، بازگرداند:

تابع ERROR در فراخوانی SWITCH اطمینان حاصل میکند که مدل بهطور صریح اجرای عملیات را متوقف میکند زمانی که هیچ انتخاب معتبری انجام نشده باشد. این کار از بروز سردرگمیهای احتمالی ناشی از انتخابهای نادرست یا گمشده در slicerها جلوگیری میکند.
محاسبه توزیع داینامیک پارتو
المان اصلی این سناریو، Measure Pareto Cumulative است که بهطور داینامیک مقادیر تجمعی پارتو را بر اساس انتخابهای slicer محاسبه میکند. این Measure مشتریان برتر را برای معیار انتخابشده بازیابی و جمع میکند:

Measure Pareto Cumulative شامل سه مرحله اصلی است:
متغیر points یک جدول شامل تمام مشتریان قابل مشاهده و مقادیر معیار مربوط به آنها (@Value) محاسبه میکند. نکته مهم این است که نمودار نباید ویژگیهای مشتری را در محور X نشان دهد. بنابراین، محاسبه فقط یک بار برای کل نمودار انجام میشود، حتی اگر Measure برای هر نقطه داده فراخوانی شود.
متغیر cumulated_points، نقاط برتر را از جدول points که قبلاً محاسبه شده فیلتر میکند، که بر اساس معیار انتخابشده به ترتیب نزولی مرتب شدهاند. این انتخاب نشاندهنده مجموعه تجمعی مشتریان تا موقعیت فعلی (x_pos) در محور عددی است. تابع WINDOW این فیلتر را بهطور بسیار مؤثر پیادهسازی میکند.
در نهایت، متغیر Result مقادیر معیار (@Value) را از cumulated_points جمع میکند و مجموع تجمعی را در هر موقعیت ارائه میدهد.
نتیجهی Measure Pareto Cumulative امکان بصریسازی نمودار خطی برای هر کشور و برندهای انتخابشده را فراهم میکند. با این حال، تعداد متفاوت مشتریان در کشورهای مختلف مقایسههای مستقیم را پیچیده میکند، زیرا هر خط به درصد ۸۰ از کل برای کشور مربوطه در موقعیت متفاوتی میرسد.

برای سادهتر کردن مقایسه، باید از یک Measure مبتنی بر درصد استفاده کنیم:

رسم درصد پارتو بر روی محور Y در مقابل محور عددی، مقایسههای شهودیتری بین گروههای مختلف، مانند کشورهای مشتریان که در این مثال استفاده شده، فراهم میکند. این همان نموداری است که در ابتدای مقاله نشان دادهایم؛ نمودار شامل یک خط مرجع ۸۰٪ با خط چین است.

نمایش بینشها Insight و توضیحات ابزار (Tooltips)
تصویربرداریVisualization قبلی مقایسه روندهای مختلف را آسان میکند، اما نمیتواند بینشهایی در مورد هر نقطه داده ارائه دهد – هر مشتری، در این مثال. برای ارائه این قابلیت تحلیلی، میتوانیم جدولی شامل محاسبات بصری اضافه کنیم که برای مشتریان در یک کشور انتخابشده به خوبی عمل میکند.

چون که ویژوال تمام مشتریان انتخابشده را نمایش میدهد، میتوانیم مقدار تجمعی Running Sum پنهان را با یک محاسبه بصری پیادهسازی کنیم.

با استفاده از ویژوال جدول، محاسبه بصری درصد را با یک تقسیم پیادهسازی میکنیم که Running Sum را با مجموع آن مقایسه میکند و از تابع COLLAPSE استفاده میکند.

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

درصد برای یک مشتری، درصدی است که در داخل کشور مربوطه قرار دارد. در این مورد، محاسبه ویژوال Running Sum از دستور PARTITIONBY در تابع WINDOW استفاده میکند:

اگر بخواهید بینشها Insights را مستقیماً در داخل نمودار خطی قبلی که چندین کشور را نمایش میدهد، ارائه دهید، میتوانید Measureهایی اضافه کنید که بهطور خاص برای نمایش در توضیحات ابزار (Tooltips) طراحی شدهاند. به عنوان مثال، میتوانیم مقدار هر نقطه داده را با استفاده از Measure Pareto Amount نمایش دهیم.

توضیحات ابزار (Tooltip) مقادیر یک مشتری را در موقعیت انتخابشده برای هر کشور در ویژوال نمایش میدهد.

نام مشتری که در توضیحات ابزار (Tooltip) نمایش داده میشود، میتواند با استفاده از یک Measure مشابه Pareto Amount به دست آید. با این حال، پیشنهاد میکنیم تعداد Measureهایی از این دست را محدود کنید، زیرا اگر در بخش توضیحات ابزار (Tooltips) ویژوال استفاده شوند، برای هر نقطه داده ارزیابی میشوند. برای جلوگیری از این مشکل عملکردی با تعداد زیادی نقطه داده، بهتر است توضیحات ابزار را به یک صفحه گزارش جداگانه منتقل کنید تا برای هر نقطه داده اجرا شود.
در اینجا تعریف Measure Customer Name آورده شده است، که شامل ستون Customer[Name] در متغیر points است، زیرا این مقدار برای محاسبه Result نیاز است. ما بهجای استفاده از VALUES یا SUMMARIZE از ALLSELECTED برای پر کردن متغیر points استفاده میکنیم، زیرا ستون Customer[Name] همچنین در محور X استفاده میشود و باید مقدار Metric Value را برای تمام مشتریان در ویژوال محاسبه کنیم:

تکنیک تحلیل داینامیک پارتو که در این مقاله نشان داده شده است، انتخاب داینامیک معیار، فیلترینگ تعاملی و بصریسازیهای مقایسهای را امکانپذیر میسازد. در حالی که محاسبات بصری میتوانند برای ویژوالها که بینشهای دقیقتری برای مشتریان فردی ارائه میدهند مفید و کارآمدتر باشند، گروههای متعدد در همان نمودار خطی نیاز به پیادهسازی مبتنی بر Measureها دارند و از یک جدول جداگانه که به عنوان Slicer استفاده میشود برای محاسبه داینامیک مقادیر هر موقعیت در توزیع پارتو بهره میبرند.
دیدگاهتان را بنویسید