Truncated mean provides a more robust measure of average by excluding a specified percentage of the smallest and largest values from the calculation. Modern PowerTruncated mean provides a more robust measure of average by excluding a specified percentage of the smallest and largest values from the calculation. Modern Power

Calculating a Dynamic Truncated Mean in Power BI Using DAX: A Quick Guide

Why You Need a Truncated Mean

In data analysis, the standard AVERAGE function is a workhorse, but it has a significant weakness: it is highly susceptible to distortion from outliers. A single extreme value, whether high or low, can skew the entire result, misrepresenting the data's true central tendency.

\ This is where the truncated mean becomes essential. It provides a more robust measure of the average by excluding a specified percentage of the smallest and largest values from the calculation.

\ While modern Power BI models have a built-in TRIMMEAN function, this function is often unavailable when using a Live Connection to an older Analysis Services (SSAS) model. This article provides a robust, manual DAX pattern that replicates this functionality and remains fully dynamic, responding to all slicers and filters in your report.

The DAX Solution for a Dynamic Truncated Mean

This measure calculates a 20% truncated mean by removing the bottom 10% and top 10% of values before averaging the remaining 80%.

\ You can paste this code directly into the "New Measure" formula bar.

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 ) )

Deconstructing the DAX Logic

This formula works in three distinct steps, all of which execute within the current filter context (e.g., whatever slicers the user has selected).

  1. Define Key Variables
  • TargetTable & TargetColumn: We assign the table and column names to variables for clean, reusable code. You must change 'FactTable'[MeasureColumn] to match your data model.
  • LowerPercentile / UpperPercentile: We define the boundaries. 0.10 and 0.90 mean we are trimming the bottom 10% and top 10%. To trim 5% from each end (a 10% total trim), you would use 0.05 and 0.95.

2. Find the Percentile Thresholds

  • MinThreshold & MaxThreshold: These variables store the actual values that correspond to our percentile boundaries.
  • PERCENTILEX.INC: We use this "iterator" function because it allows us to first FILTER the table.
  • `FILTER(…, NOT(ISBLANK(…))): This is a crucial step. We calculate the percentiles only for rows where our target column is not blank. This prevents BLANK() values from skewing the percentile calculation.
  • The result is that MinThreshold holds the value of the 10th percentile (e.g., 4.5) and MaxThreshold holds the value of the 90th percentile (e.g., 88.2) for the currently visible data.

3. Calculate the Final Average

  • RETURN CALCULATE(...): The CALCULATE function is the key to making the measure dynamic. It ensures the entire calculation respects the filters applied by any slicers or visuals in the report.
  • AVERAGEX(FILTER(...)): The core of the calculation. We use AVERAGEX to iterate over a table.
  • FILTER(...): We filter our TargetTable a final time. This filter is the "trim." It keeps only the rows where the value in TargetColumn is:
  • Greater than or equal to our MinThreshold
  • AND
  • Less than or equal to our MaxThreshold
  • AVERAGEX(..., TargetColumn): AVERAGEX then calculates the simple average of TargetColumn for only the rows that passed the filter.

Conclusion

By implementing this DAX pattern, you create a robust, dynamic, and outlier-resistant KPI. This measure provides a more accurate picture of your data's central tendency and will correctly re-calculate on the fly as users interact with your Power BI report.


Thank you for taking the time to explore data-related insights with me. I appreciate your engagement. If you find this information helpful, I invite you to follow me or connect with me on LinkedIn or X(@Luca_DataTeam). Happy exploring!👋

Disclaimer: The articles reposted on this site are sourced from public platforms and are provided for informational purposes only. They do not necessarily reflect the views of MEXC. All rights remain with the original authors. If you believe any content infringes on third-party rights, please contact service@support.mexc.com for removal. MEXC makes no guarantees regarding the accuracy, completeness, or timeliness of the content and is not responsible for any actions taken based on the information provided. The content does not constitute financial, legal, or other professional advice, nor should it be considered a recommendation or endorsement by MEXC.

You May Also Like

CME Group plans to launch SOL and XRP futures options on October 13

CME Group plans to launch SOL and XRP futures options on October 13

PANews reported on September 18 that according to The Block, CME Group plans to launch Solana (SOL) and Ripple (XRP) futures options on October 13, pending regulatory review. CME said on Wednesday that the new contracts will cover standard and micro options on SOL and XRP futures, with daily, monthly, and quarterly expiration dates. The new options are intended to give institutional investors and active traders greater flexibility in managing their risk exposure to the two cryptocurrencies. Giovanni Vicioso, CME's global head of cryptocurrency products, said the plan to launch options is due to the "significant growth and increasing liquidity" of the exchange's SOL and XRP futures.
Share
PANews2025/09/18 07:23
CRED iQ Launches Private Institutional Data Portal for a Leading Global Bank

CRED iQ Launches Private Institutional Data Portal for a Leading Global Bank

CRED iQ Expands FUSION Platform with Large-Scale Private CRE Loan Data Integration PHILADELPHIA and MIAMI, Jan. 11, 2026 /PRNewswire/ — CRED iQ, a rapidly growing
Share
AI Journal2026/01/11 23:31
Tokyo’s Metaplanet Launches Miami Subsidiary to Amplify Bitcoin Income

Tokyo’s Metaplanet Launches Miami Subsidiary to Amplify Bitcoin Income

Metaplanet Inc., the Japanese public company known for its bitcoin treasury, is launching a Miami subsidiary to run a dedicated derivatives and income strategy aimed at turning holdings into steady, U.S.-based cash flow. Japanese Bitcoin Treasury Player Metaplanet Opens Miami Outpost The new entity, Metaplanet Income Corp., sits under Metaplanet Holdings, Inc. and is based […]
Share
Coinstats2025/09/18 00:32