Dalam analisis data, fungsi AVERAGE standar adalah andalan, tetapi memiliki kelemahan signifikan: sangat rentan terhadap distorsi dari outlier. Satu nilai ekstrem, baik tinggi atau rendah, dapat memiringkan seluruh hasil, salah merepresentasikan kecenderungan sentral data yang sebenarnya.
\ Di sinilah truncated mean menjadi penting. Ini memberikan ukuran rata-rata yang lebih robust dengan mengecualikan persentase tertentu dari nilai terkecil dan terbesar dari perhitungan.
\ Meskipun model Power BI modern memiliki fungsi TRIMMEAN bawaan, fungsi ini sering tidak tersedia saat menggunakan Live Connection ke model Analysis Services (SSAS) yang lebih lama. Artikel ini menyediakan pola DAX manual yang robust yang mereplikasi fungsi ini dan tetap sepenuhnya dinamis, merespons semua slicer dan filter dalam laporan Anda.
Measure ini menghitung truncated mean 20% dengan menghapus 10% nilai terbawah dan 10% nilai teratas sebelum merata-ratakan 80% sisanya.
\ Anda dapat menempelkan kode ini langsung ke bilah formula "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 ) )
Formula ini bekerja dalam tiga langkah berbeda, yang semuanya dieksekusi dalam konteks filter saat ini (misalnya, slicer apa pun yang dipilih pengguna).
TargetTable & TargetColumn: Kami menetapkan nama tabel dan kolom ke variabel untuk kode yang bersih dan dapat digunakan kembali. Anda harus mengubah 'FactTable'[MeasureColumn] agar sesuai dengan model data Anda.LowerPercentile / UpperPercentile: Kami mendefinisikan batas. 0.10 dan 0.90 berarti kami memangkas 10% bawah dan 10% atas. Untuk memangkas 5% dari setiap ujung (total pemangkasan 10%), Anda akan menggunakan 0.05 dan 0.95.MinThreshold & MaxThreshold: Variabel ini menyimpan nilai aktual yang sesuai dengan batas persentil kami.PERCENTILEX.INC: Kami menggunakan fungsi "iterator" ini karena memungkinkan kami untuk terlebih dahulu FILTER tabel.MinThreshold menyimpan nilai persentil ke-10 (misalnya, 4.5) dan MaxThreshold menyimpan nilai persentil ke-90 (misalnya, 88.2) untuk data yang saat ini terlihat.RETURN CALCULATE(...): Fungsi CALCULATE adalah kunci untuk membuat measure dinamis. Ini memastikan seluruh perhitungan menghormati filter yang diterapkan oleh slicer atau visual apa pun dalam laporan.AVERAGEX(FILTER(...)): Inti dari perhitungan. Kami menggunakan AVERAGEX untuk iterasi di atas tabel.FILTER(...): Kami memfilter TargetTable untuk terakhir kalinya. Filter ini adalah "pemangkasan". Ini hanya menyimpan baris di mana nilai dalam TargetColumn adalah:AVERAGEX(..., TargetColumn): AVERAGEX kemudian menghitung rata-rata sederhana dari TargetColumn hanya untuk baris yang lolos filter.Dengan menerapkan pola DAX ini, Anda membuat KPI yang robust, dinamis, dan tahan terhadap outlier. Measure ini memberikan gambaran yang lebih akurat tentang kecenderungan sentral data Anda dan akan menghitung ulang dengan benar secara langsung saat pengguna berinteraksi dengan laporan Power BI Anda.
Terima kasih telah meluangkan waktu untuk menjelajahi wawasan terkait data bersama saya. Saya menghargai keterlibatan Anda. Jika Anda menemukan informasi ini bermanfaat, saya mengundang Anda untuk mengikuti saya atau terhubung dengan saya di LinkedIn atau X(@Luca_DataTeam). Selamat menjelajah!👋


