در تحلیل داده، تابع استاندارد AVERAGE یک ابزار کاری است، اما یک ضعف قابل توجه دارد: به شدت مستعد اعوجاج از موارد پرت است. یک مقدار شدید واحد، چه بالا چه پایین، میتواند کل نتیجه را منحرف کند و گرایش مرکزی واقعی داده را نادرست نشان دهد.
اینجا جایی است که میانگین برش خورده ضروری میشود. این روش یک معیار قویتر از میانگین را با حذف یک درصد مشخص از کوچکترین و بزرگترین مقادیر از محاسبه ارائه میدهد.
در حالی که مدلهای مدرن Power BI یک تابع داخلی TRIMMEAN دارند، این تابع اغلب هنگام استفاده از Live Connection به یک مدل قدیمیتر Analysis Services (SSAS) در دسترس نیست. این مقاله یک الگوی DAX دستی و قوی ارائه میدهد که این عملکرد را تکرار میکند و کاملاً پویا باقی میماند و به تمام برشدهندهها و فیلترها در گزارش شما پاسخ میدهد.
این معیار یک میانگین برش خورده 20 درصدی را با حذف 10 درصد پایین و 10 درصد بالای مقادیر قبل از میانگینگیری 80 درصد باقیمانده محاسبه میکند.
میتوانید این کد را مستقیماً در نوار فرمول "New Measure" قرار دهید.
Trimmed Mean (20%) = VAR TargetTable = 'FactTable' VAR TargetColumn = 'FactTable'[MeasureColumn] VAR LowerPercentile = 0.10 // Defines the bottom 10% to trim VAR UpperPercentile = 0.90 // Defines the top 10% to trim (1.0 - 0.10) // 1. Find the value at the 10th percentile VAR MinThreshold = PERCENTILEX.INC( FILTER( TargetTable, NOT( ISBLANK( TargetColumn ) ) ), TargetColumn, LowerPercentile ) // 2. Find the value at the 90th percentile VAR MaxThreshold = PERCENTILEX.INC( FILTER( TargetTable, NOT( ISBLANK( TargetColumn ) ) ), TargetColumn, UpperPercentile ) // 3. Calculate the average, including only values between the thresholds RETURN CALCULATE( AVERAGEX( FILTER( TargetTable, TargetColumn >= MinThreshold && TargetColumn <= MaxThreshold ), TargetColumn ) )
این فرمول در سه مرحله مجزا کار میکند که همگی در زمینه فیلتر فعلی اجرا میشوند (مثلاً هر برشدهندهای که کاربر انتخاب کرده است).
TargetTable و TargetColumn: ما نام جدول و ستون را به متغیرها برای کد تمیز و قابل استفاده مجدد اختصاص میدهیم. شما باید 'FactTable'[MeasureColumn] را برای تطابق با مدل دادهتان تغییر دهید.LowerPercentile / UpperPercentile: ما مرزها را تعریف میکنیم. 0.10 و 0.90 به این معنی است که ما 10 درصد پایین و 10 درصد بالا را برش میدهیم. برای برش 5 درصد از هر انتها (مجموع 10 درصد برش)، باید از 0.05 و 0.95 استفاده کنید.MinThreshold و MaxThreshold: این متغیرها مقادیر واقعی را که با مرزهای صدک ما مطابقت دارند، ذخیره میکنند.PERCENTILEX.INC: ما از این تابع "تکرارگر" استفاده میکنیم زیرا به ما اجازه میدهد ابتدا جدول را FILTER کنیم.MinThreshold مقدار صدک دهم (مثلاً 4.5) و MaxThreshold مقدار صدک نودم (مثلاً 88.2) را برای دادههای قابل مشاهده فعلی نگه میدارد.RETURN CALCULATE(...): تابع CALCULATE کلید تبدیل معیار به پویا است. این تضمین میکند که کل محاسبه به فیلترهای اعمال شده توسط هر برشدهنده یا بصری در گزارش احترام میگذارد.AVERAGEX(FILTER(...)): هسته محاسبه. ما از AVERAGEX برای تکرار روی جدول استفاده میکنیم.FILTER(...): ما TargetTable خود را یک بار آخر فیلتر میکنیم. این فیلتر "برش" است. فقط سطرهایی را نگه میدارد که مقدار در TargetColumn:AVERAGEX(..., TargetColumn): AVERAGEX سپس میانگین ساده TargetColumn را فقط برای سطرهایی که فیلتر را پاس کردهاند محاسبه میکند.با پیادهسازی این الگوی DAX، یک KPI قوی، پویا و مقاوم در برابر موارد پرت ایجاد میکنید. این معیار تصویری دقیقتر از گرایش مرکزی دادههای شما ارائه میدهد و به درستی در حین تعامل کاربران با گزارش Power BI شما دوباره محاسبه میشود.
از اینکه وقت گذاشتید و بینشهای مرتبط با داده را با من کاوش کردید، متشکرم. از تعامل شما قدردانی میکنم. اگر این اطلاعات مفید است، دعوت میکنم مرا دنبال کنید یا در LinkedIn یا X(@Luca_DataTeam) با من ارتباط برقرار کنید. کاوش خوشایندی داشته باشید!👋


