Power BI - Dax - AVERAGEX

Ryan·2025년 1월 18일

SQL/Python 분석

목록 보기
78/94

DAX 함수: AVERAGEX, FILTER, ALL 활용과 Weekday Sales Goal 예제

DAX(데이터 분석 식)는 Power BI와 같은 도구에서 데이터를 집계하고 분석하는 강력한 언어입니다. 이번 글에서는 자주 사용하는 AVERAGEX, FILTER, ALL 함수의 개념과 활용법을 살펴본 뒤, 이를 활용한 Weekday Sales Goal 예제를 소개합니다.


1. DAX 주요 함수 소개

1.1 AVERAGEX

  • 정의: 지정된 테이블의 각 행에 대해 식(Expression)을 계산한 결과의 평균을 반환합니다.
  • 구문:
    DAX
    복사편집
    AVERAGEX(<table>, <expression>)
    
  • 사용 예시:
    DAX
    복사편집
    AvgSalesPerProduct =
    AVERAGEX(
        SUMMARIZE(Sales, Sales[ProductID], "TotalSales", SUM(Sales[Amount])),
        [TotalSales]
    )
    
    • SUMMARIZE로 제품별 매출 합계를 계산한 뒤, 전체 제품의 평균 매출을 반환합니다.

1.2 FILTER

  • 정의: 특정 조건을 만족하는 행만 남긴 가상 테이블을 반환합니다.
  • 구문:
    DAX
    복사편집
    FILTER(<table>, <filter>)
    
  • 사용 예시:
    DAX
    복사편집
    HighValueOrders =
    FILTER(
        Sales,
        Sales[Amount] > 1000
    )
    
    • Sales 테이블에서 매출액이 1000을 초과하는 행만 반환합니다.

1.3 ALL

  • 정의: 지정된 컬럼이나 테이블에 적용된 필터를 제거하고, 모든 행이나 값을 반환합니다.
  • 구문:
    DAX
    복사편집
    ALL( [<table> | <column>[, <column>[, …]]] )
    
  • 사용 예시:
    DAX
    복사편집
    TotalAllSales =
    CALCULATE(
        SUM(Sales[Amount]),
        ALL(Sales)
    )
    
    • 모든 필터를 제거한 상태에서 Sales 테이블의 전체 매출 합계를 반환합니다.

2. Weekday Sales Goal: AVERAGEX, FILTER, ALL 활용

2.1 예제 코드

DAX
복사편집
Weekday Sales Goal =
CALCULATE(
    AVERAGEX(
        VALUES(D_Calendar[Date]),
        [S1_Daily AVG Sales (Qty)]          -- 일별 평균 판매량
    ),
    ALL(Sales[SalesDate]),                  -- SalesDate 필터 제거
    ALL(D_Calendar[Date]),                  -- Calendar 날짜 필터 제거
    FILTER(
        D_Calendar,
        D_Calendar[Weeknum] =
            WEEKDAY(MAX(Sales[SalesDate]))
    )
)

2.2 코드 설명

  1. CALCULATE:
    • 내부의 AVERAGEX를 계산하면서, 뒤쪽의 ALLFILTER 조건을 적용해 컨텍스트를 조정합니다.
  2. AVERAGEX:
    • VALUES(D_Calendar[Date])는 현재 필터 컨텍스트에서 날짜 목록을 가져옵니다.
    • [S1_Daily AVG Sales (Qty)]는 각 날짜의 일별 평균 판매량을 계산하는 측정값(Measure)입니다.
    • 이 식은 특정 날짜들에 대한 평균 판매량을 반환합니다.
  3. ALL:
    • ALL(Sales[SalesDate])ALL(D_Calendar[Date])는 보고서에 설정된 날짜 필터를 무시하고 전체 데이터로 계산합니다.
  4. FILTER:
    • D_Calendar 테이블에서 가장 최근 판매일의 요일과 같은 요일에 해당하는 날짜만 필터링합니다.
    • 예를 들어, 최근 판매일이 2023년 9월 26일(화요일)이라면, 모든 화요일에 해당하는 날짜만 남깁니다.

2.3 예제 동작

  • 이 DAX 식은 "현재 가장 최근 판매일과 동일한 요일"에 해당하는 모든 날짜의 평균 판매량을 계산합니다.
  • 예를 들어, 최근 판매일이 화요일이라면, 모든 화요일 데이터를 기준으로 평균 판매량을 구합니다.
  • 결과는 KPI 지표로 활용하거나 목표값 비교 등에 적합합니다.

3. 활용 시 주의사항

3.1 컨텍스트 이해

  • CALCULATE는 필터 컨텍스트를 변경하거나 덧붙입니다. ALL은 기존 필터를 제거하고, FILTER는 새 필터를 적용합니다. 이 과정을 이해하는 것이 핵심입니다.

3.2 성능 문제

  • FILTER, AVERAGEX 등 행 단위로 계산되는 함수는 데이터 양이 많을수록 성능에 영향을 미칠 수 있습니다. 필요한 경우 요약 테이블을 미리 생성하여 성능을 개선하세요.

3.3 WEEKDAY 함수

  • Power BI의 WEEKDAY는 기본적으로 1(일요일)~7(토요일)을 반환합니다. 필요에 따라 다른 기준(월요일 시작 등)을 설정할 수 있습니다.

4. 정리

  • AVERAGEX: 테이블의 각 행 계산 후 결과의 평균을 구합니다.
  • FILTER: 조건에 맞는 데이터만 추출합니다.
  • ALL: 필터를 제거하고 전체 데이터를 참조합니다.
  • Weekday Sales Goal 예제는 최근 판매일의 요일에 해당하는 모든 날짜의 평균 판매량을 구하는 식으로, KPI 계산에 자주 활용됩니다.

0개의 댓글