Power BI와 DAX를 사용하여 동적 절단 평균 계산하는 방법

발행: (2026년 1월 7일 오전 06:57 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Power BI에서 DAX를 사용하여 동적 절단 평균을 계산하는 방법에 대한 표지 이미지

왜 절단 평균이 필요한가

데이터 분석에서 표준 AVERAGE 함수는 기본적인 도구이지만, 중요한 약점이 있습니다: 이상치에 매우 민감하게 왜곡될 수 있습니다. 높거나 낮은 단일 극단값 하나만으로도 전체 결과가 왜곡되어 데이터의 실제 중심 경향을 잘못 나타낼 수 있습니다.

이때 절단 평균이 필수적입니다. 계산에서 가장 작고 큰 값의 지정된 비율을 제외함으로써 평균의 보다 견고한 측정을 제공합니다.

현대 Power BI 모델에는 내장된 TRIMMEAN 함수가 있지만, 오래된 Analysis Services (SSAS) 모델에 대한 라이브 연결을 사용할 경우 이 함수가 종종 제공되지 않습니다. 아래 DAX 패턴은 이 기능을 재현하며, 보고서의 모든 슬라이서와 필터에 완전히 동적으로 반응합니다.

동적 절단 평균을 위한 DAX 솔루션

이 측정값은 하위 10 %와 상위 10 % 값을 제거한 뒤 남은 80 %를 평균 내어 20 % 절단 평균을 계산합니다.

이 코드를 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
    )
)

DAX 논리 분해

수식은 세 가지 뚜렷한 단계로 작동하며, 모두 현재 필터 컨텍스트 내에서 실행됩니다(예: 사용자가 선택한 모든 슬라이서).

1. 핵심 변수 정의

  • TargetTableTargetColumn – 테이블 및 열 이름을 변수에 할당하여 깔끔하고 재사용 가능한 코드를 작성합니다. 모델에 맞는 열로 'FactTable'[MeasureColumn]을(를) 교체하십시오.
  • LowerPercentile / UpperPercentile – 경계값을 정의합니다. 0.100.90은 각각 하위 10 %와 상위 10 %를 잘라냅니다. 양쪽 끝에서 각각 5 %씩(전체 10 % 트림)를 잘라내려면 0.050.95를 사용하십시오.

2. 백분위수 임계값 찾기

  • MinThresholdMaxThreshold – 백분위수 경계에 해당하는 실제 값을 저장합니다.
  • PERCENTILEX.INC – 반복자로 사용되어 먼저 테이블을 FILTER 할 수 있게 합니다.
  • FILTER(…, NOT(ISBLANK(…))) – 대상 열이 비어 있지 않은 행에 대해서만 백분위수를 계산하도록 하여 BLANK() 값이 계산을 왜곡하는 것을 방지합니다.

그 결과 MinThreshold는 현재 표시된 데이터의 10번째 백분위수 값(예: 4.5)을, MaxThreshold는 90번째 백분위수 값(예: 88.2)을 보유합니다.

3. 최종 평균 계산

  • RETURN CALCULATE(…) – 측정값을 동적으로 만들어 슬라이서나 시각화에 적용된 모든 필터를 존중합니다.
  • AVERAGEX(FILTER(…)) – 필터링된 테이블을 반복하면서 트림 기준을 만족하는 행에 대해 TargetColumn의 단순 평균을 계산합니다.
  • 내부 FILTERTargetColumn≥ MinThreshold AND ≤ MaxThreshold인 행만 남깁니다.

결론

이 DAX 패턴을 구현함으로써 견고하고 동적이며 이상값에 강인한 KPI를 만들 수 있습니다. 이 측정값은 데이터의 중심 경향에 대한 보다 정확한 그림을 제공하며 사용자가 Power BI 보고서와 상호 작용할 때 자동으로 다시 계산됩니다.

Back to Blog

관련 글

더 보기 »

데이터 사이언스 스킬 향상 38일 차

데이터 시각화 새해 복 많이 받으세요 🥂 데이터 시각화에서 나는 단순히 “차트를 그리는” 것이 아니었습니다. 데이터 가져오기 나는 관계형 데이터베이스에 발을 들였습니다: > Insert relationa...