În analiza datelor, funcția standard AVERAGE este un instrument de bază, dar are o slăbiciune semnificativă: este foarte susceptibilă la distorsiuni cauzate de valorile extreme. O singură valoare extremă, fie mare, fie mică, poate denatura întregul rezultat, reprezentând greșit tendința centrală reală a datelor.
\ Aici intervine media trunchiată. Aceasta oferă o măsură mai robustă a mediei prin excluderea unui procent specificat din cele mai mici și cele mai mari valori din calcul.
\ În timp ce modelele Power BI moderne au o funcție TRIMMEAN integrată, această funcție este adesea indisponibilă atunci când se folosește o conexiune Live la un model Analysis Services (SSAS) mai vechi. Acest articol oferă un model DAX manual robust care reproduce această funcționalitate și rămâne complet dinamic, răspunzând la toate segmentările și filtrele din raportul dvs.
Această măsură calculează o medie trunchiată de 20% prin eliminarea celor 10% valori de jos și 10% valori de sus înainte de calcularea mediei pentru restul de 80%.
\ Puteți lipi acest cod direct în bara de formule "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 ) )
Această formulă funcționează în trei pași distincți, toți executându-se în contextul curent al filtrului (de exemplu, oricare segmentări selectate de utilizator).
TargetTable & TargetColumn: Atribuim numele tabelului și coloanei variabilelor pentru un cod curat și reutilizabil. Trebuie să schimbați 'FactTable'[MeasureColumn] pentru a se potrivi cu modelul dvs. de date.LowerPercentile / UpperPercentile: Definim limitele. 0.10 și 0.90 înseamnă că eliminăm cei 10% de jos și cei 10% de sus. Pentru a elimina 5% de la fiecare capăt (o eliminare totală de 10%), ați folosi 0.05 și 0.95.MinThreshold & MaxThreshold: Aceste variabile stochează valorile reale care corespund limitelor noastre de percentilă.PERCENTILEX.INC: Folosim această funcție "iterator" deoarece ne permite să aplicăm mai întâi FILTER pe tabel.MinThreshold conține valoarea percentilei a 10-a (de ex., 4.5) și MaxThreshold conține valoarea percentilei a 90-a (de ex., 88.2) pentru datele vizibile în prezent.RETURN CALCULATE(...): Funcția CALCULATE este cheia pentru a face măsura dinamică. Aceasta asigură că întregul calcul respectă filtrele aplicate de orice segmentări sau elemente vizuale din raport.AVERAGEX(FILTER(...)): Nucleul calculului. Folosim AVERAGEX pentru a itera peste un tabel.FILTER(...): Filtrăm TargetTable o ultimă dată. Acest filtru este "trunchierea". Păstrează doar rândurile în care valoarea din TargetColumn este:AVERAGEX(..., TargetColumn): AVERAGEX calculează apoi media simplă a TargetColumn doar pentru rândurile care au trecut de filtru.Prin implementarea acestui model DAX, creați un KPI robust, dinamic și rezistent la valorile extreme. Această măsură oferă o imagine mai precisă a tendinței centrale a datelor dvs. și se va recalcula corect în timp real pe măsură ce utilizatorii interacționează cu raportul dvs. Power BI.
Vă mulțumesc pentru că v-ați luat timpul să explorați perspective legate de date împreună cu mine. Apreciez implicarea dvs. Dacă găsiți aceste informații utile, vă invit să mă urmăriți sau să vă conectați cu mine pe LinkedIn sau X(@Luca_DataTeam). Explorare plăcută!👋

