본문 바로가기
● Data Insights/Data Visualization

(Power BI) DAX 추천: 현업에서 가장 핫한 10가지 가이드

by DATA Canvas 2025. 9. 23.
반응형

Power BI 보고서의 정확성, 유연성, 성능을 극대화하려면 필터 컨텍스트, 시간 인텔리전스, 테이블 조작 등 다양한 기능을 제공하는 DAX 함수를 전략적으로 활용해야 합니다. 이 10가지 주요 DAX 함수의 실제 사용 예시, 주의사항, 장점을 파악해 데이터 모델의 가치를 높이세요

 


CALCULATE

 

1. 상세 용도 : 식의 필터 컨텍스트를 추가, 제거, 변경하여 특정 조건에 맞는 지표를 산출합니다.

     - 동적 KPI 생성: 지역·기간·제품별 매출, 비용, 이익

     - 가상 테이블 필터: 상위 10% 고객, 특정 매출 구간

2. 예시

WesternSales2025 =
  CALCULATE(
    [Total Sales],
    'Region'[RegionName] = "West",
    YEAR('Sales'[Date]) = 2025
  )

 

3. 주의사항

     - 필터 인수가 필터 컨텍스트를 전환하므로, 의도치 않은 중복 필터링에 주의

     - 다중 테이블 참조 시 컨텍스트 교차 방향 확인 필요

4. 장점

     - 복잡한 비즈니스 로직을 단일 식으로 구현

     - 행 수준 보안(RLS)과 연계해 세밀한 데이터 접근 제어 가능

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/calculate-function-dax

반응형

 

SUMX

 

1. 상세 용도 : 테이블의 각 행에 사용자 식을 계산한 뒤 결과를 합산합니다.

     - 단가×수량 매출 산정, 할인 후 총액

     - 가중 평균, 지수화된 점수 합계

2. 예시

TotalRevenue =
  SUMX(
    'Sales',
    'Sales'[Quantity] * 'Sales'[UnitPrice]
  )

 

3. 주의사항

     - 대용량 테이블에 적용 시 성능 저하 우려

     - 사전 필터링이나 요약 테이블 활용 권장

4. 장점

     - 행 단위 복합 계산 지원으로 정확도 보장

     - CALCULATE·FILTER와 조합해 유연성 확보

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/sumx-function-dax


FILTER

 

1. 상세 용도 : 조건에 맞는 행만 추출해 새로운 테이블 반환

     - 고가 상품, 신제품 세그먼트

     - 최근 30일 주문 내역

2. 예시

HighValueCustomers =
  CALCULATE(
    [Total Sales],
    FILTER(
      'Customers',
      'Customers'[TotalPurchase] > 1000000
    )
  )

 

3. 주의사항

     - 전체 테이블 스캔으로 계산 비용 발생

     - 인덱스, 단순 비교 조건 활용해 효율성 개선

4. 장점

     - 복합 논리 조건(AND/OR/NOT) 유연 구성

     - CALCULATE와 결합해 동적 필터 컨텍스트 구현

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/filter-function-dax


ALL / REMOVEFILTERS

 

1. 상세 용도 : 특정 열·테이블의 모든 필터를 제거해 전체 집계 참조

     - 전체 대비 비율(%) 계산

     - 대시보드 초기 상태 설정

2. 예시

AllRegionSales =
  CALCULATE(
    [Total Sales],
    ALL('Region')
  )

 

3. 주의사항

     - ALL 사용 시 모든 필터가 해제되므로 모델 관계 영향 확인

     - REMOVEFILTERS가 더욱 명시적이고 안전

4. 장점

     - 부분 집계 대비 전체 집계 비교 용이

     - 계산 컨텍스트 초기화로 예측 가능성 확보

5. 공식 문서(ALL) : https://learn.microsoft.com/ko-kr/dax/all-function-dax
6. 공식 문서(REMOVEFILTERS) : https://learn.microsoft.com/ko-kr/dax/removefilters-function-dax


RELATED

 

1. 상세 용도 : 관계형 모델에서 1:다 관계로 연결된 테이블의 값을 조회

     - 제품 코드 → 제품명, 카테고리

     - 고객 ID → 세분화 속성

2. 예시

ProductCategory = RELATED('Product'[CategoryName])

 

3. 주의사항

     - 정의되지 않은 관계에는 오류 발생

     - 다대다 관계 시 RELATEDTABLE 또는 TREATAS 사용

4. 장점

     - 조인 구문 없이 참조 값 활용

     - 계산 열·측정값에 손쉽게 적용

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/related-function-dax


DATEADD / TOTALMTD / TOTALQTD / TOTALYTD

 

1. 상세 용도 : 시간 기반 이동 및 누적 합산 자동화

     - DATEADD: 전년·전월 대비 비교

     - TOTALMTD/QTD/YTD: 월·분기·연 누적 합계

2. 예시

SalesPY_Month =
  CALCULATE(
    [Total Sales],
    DATEADD('Date'[Date], -1, YEAR)
  )

MTD_Sales =
  TOTALMTD(
    [Total Sales],
    'Date'[Date]
  )

 

3. 주의사항

     - 날짜 테이블에 연속 날짜 보장 필요

     - 누락된 날짜 시 이동 간격 불일치

4. 장점

     - 시간 인텔리전스 로직 간편 구현

     - 전년 대비·누적 실적 자동 갱신

5. 공식 문서(DATEADD) : https://learn.microsoft.com/ko-kr/dax/dateadd-function-dax
6. 공식 문서(TOTALYTD): https://learn.microsoft.com/ko-kr/dax/totalytd-function-dax


RANKX

 

1. 상세 용도 : 지정 식 기준으로 테이블 행별 순위 부여

     - 매출 순위, 이익 순위

     - 상위 N개 상품이나 직원 산정

2. 예시

SalesRank =
  RANKX(
    ALL('Products'),
    [Total Sales],
    ,
    DESC,
    Dense
  )

 

3. 주의사항

     - ALL 미사용 시 필터 범위 내에서만 순위 계산

     - 동점 처리 옵션 지정 필수

4. 장점

     - 실시간 랭킹 대시보드 구현

     - Top/Bottom 분석 자동화

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/rankx-function-dax


SWITCH

 

1. 상세 용도: 다중 조건 분기 로직 간결 작성

     - 매출 구간별 등급 분류

     - 사용자 세그먼트 태깅

2. 예시

SalesCategory =
  SWITCH(
    TRUE(),
    [Total Sales] > 1000000, "High",
    [Total Sales] > 500000, "Medium",
    "Low"
  )

 

3. 주의사항

     - 조건이 많아지면 가독성 저하

     - 복잡 로직은 맵핑 테이블 이용 권장

4. 장점

     - IF 중첩 감소로 유지보수성 향상

     - 간단한 분류 로직 즉시 적용

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/switch-function-dax


SUMMARIZE / ADDCOLUMNS

 

1. 상세 용도 : 테이블 그룹화 및 그룹별 집계값 포함 새 테이블 생성

     - 월별 매출 요약

     - 카테고리별 평균 마진, 성장률

2. 예시

MonthlySummary =
  SUMMARIZE(
    'Sales',
    'Date'[YearMonth],
    "MonthlySales", [Total Sales]
  )

DetailedSummary =
  ADDCOLUMNS(
    MonthlySummary,
    "YoYPct",
    DIVIDE(
      [MonthlySales] -
      CALCULATE(
        [MonthlySales],
        DATEADD('Date'[Date], -1, YEAR)
      ),
      CALCULATE(
        [MonthlySales],
        DATEADD('Date'[Date], -1, YEAR)
      )
    )
  )

 

3. 주의사항

     - 빈 그룹·중복 키 처리 주의

     - 컬럼 참조 순서 명확히 지정

4. 장점

     - 동적 요약 데이터 구축

     - 후속 계산(증감율·누적합) 최적

5. 공식 문서(SUMMARIZE) : https://learn.microsoft.com/ko-kr/dax/summarize-function-dax
6. 공식 문서(ADDCOLUMNS) : https://learn.microsoft.com/ko-kr/dax/addcolumns-function-dax


TREATAS

 

1. 상세 용도: 외부 테이블 값을 가상 필터로 매핑

     - 슬라이서 선택값 기반 필터링

     - 동적 파라미터 분석

2. 예시

SalesBySelectedRegions =
  CALCULATE(
    [Total Sales],
    TREATAS(
      VALUES('Selection'[RegionName]),
      'Region'[RegionName]
    )
  )

 

3. 주의사항

     - 대상 열 데이터 형식·값 일치 필수

     - 파라미터 테이블 관리 중요

4. 장점

     - 사용자 입력 기반 동적 필터 구현

     - What-If 분석, 파라미터 활용 강력

5. 공식 문서 : https://learn.microsoft.com/ko-kr/dax/treatas-function-dax

반응형