alt

4주차

Shared on March 29, 2026

Power BI 시간 인텔리전스 및 DAX 함수 실습

개요

  • 목표: Power BI에서 시간 인텔리전스와 DAX를 활용해 데이터 모델을 구축하고, 측정값을 만들며 시각화를 완성한다.
  • 핵심 내용: 날짜 테이블 생성 → 컬럼 추가 → 관계 설정 → 시각화 → DAX 함수 실습 → 측정값 관리 → 변수·필터 활용.

핵심 개념

항목내용
시간 인텔리전스 함수CALENDAR, FORMAT, YEAR, MONTH, QUARTER, WEEKDAY, DATEADD, SAMEPERIODLASTYEAR, DATEBETWEEN, MTD, YTD, TOTALMTD, TOTALYTD
DAX 함수 종류집계: SUM, AVERAGE, MIN, MAX, COUNT, COUNTA; 필터: CALCULATE, FILTER, ALL, ALLSELECTED; 논리: IF, SWITCH, AND, OR; 텍스트: LEFT, RIGHT, MID, LEN; 수학: ROUNDUP, ROUNDDOWN, ABS; 통계: RANKX, PERCENTILEX.INC; 날짜: TODAY, NOW, YEAR, MONTH, DAY
측정값데이터 모델에 저장되는 계산 항목. 총 매출, 전월 매출, 전년 동월 매출, 증감률, 구성비, 비율, 핫스팟(핸드폰 매출)
관계 설정날짜 테이블(Date) → 매출 테이블(Sales) : 1:다 관계. CALCULATE·FILTER 로 필터 컨텍스트를 조정
변수 활용VAR start_date = DATEADD(Date[Date], -3, MONTH) 등으로 가독성 향상 및 오류 방지
필터 함수ALL, ALLSELECTED, ALLEXCEPT 등으로 필터 컨텍스트를 제어
Quick MeasurePower BI에서 자동으로 생성되는 측정값(예: 전년 대비 증감률)과 수동 측정값의 차이와 조정 방법

상세 노트

1. 날짜 테이블 만들기

  1. CALENDAR

    Date = CALENDAR(DATE(2019,1,1), DATE(2022,12,31))
  2. 컬럼 추가

    • 연도: Year = YEAR(Date[Date])
    • 분기: Quarter = "Q" & FORMAT(Date[Date], "Q")
    • 연월: YearMonth = FORMAT(Date[Date], "yyyy-MM")
    • : Month = MONTH(Date[Date])
    • 월명(영문/한글): MonthName = FORMAT(Date[Date], "MMM") / FORMAT(Date[Date], "MMMM")
    • 요일(영문/한글): WeekdayName = FORMAT(Date[Date], "ddd") / FORMAT(Date[Date], "dddd")
    • 요일 번호: Weekday = WEEKDAY(Date[Date], 2) (월=1, 일=7)
  3. 정렬 문제 해결

    • 텍스트 컬럼(MonthName)은 알파벳 순으로 정렬되므로, 숫자 컬럼(Month)을 기준으로 정렬 설정.
    • 요일도 마찬가지로 Weekday 컬럼을 기준으로 정렬.

2. 관계 설정

  • Date[Date]Sales[SaleDate] (1:다).
  • 관계 창에서 카디널리티를 1:다로 확인 후 활성화.
  • 필요 시 관계 관리새 관계를 사용해 연결.

3. 시각화 예시

  • 라인 차트
    • X축: Date[Date] (연/분기/월/일 수준 선택 가능)
    • Y축: Sales[TotalSales]
  • 계층적 축: Date[Year]QuarterMonthDay
  • 차트 제목, 축 레이블 등 서식은 시각화 개체 → 서식에서 조정.

4. DAX 측정값 만들기

목적DAX 예시설명
총 매출Total Sales = SUM(Sales[Amount])단순 합계
전월 매출Prev Month Sales = CALCULATE([Total Sales], DATEADD(Date[Date], -1, MONTH))DATEADD 로 한 달 전 컨텍스트
전년 동월 매출Same Month Last Year = CALCULATE([Total Sales], SAMEPERIODLASTYEAR(Date[Date]))SAMEPERIODLASTYEAR 사용
증감률YoY Growth % = DIVIDE([Total Sales] - [Same Month Last Year], [Same Month Last Year], 0)DIVIDE 로 0으로 나누는 상황 방지
MTD / YTD 누계MTD Sales = TOTALMTD([Total Sales], Date[Date])<br>YTD Sales = TOTALYTD([Total Sales], Date[Date])TOTALMTD, TOTALYTD
핸드폰 매출Phone Sales = CALCULATE([Total Sales], Sales[Category] = "Phone")필터 컨텍스트 지정
수량 구간Qty Group = SWITCH(TRUE(), Sales[Qty] < 10, "0-9", Sales[Qty] < 20, "10-19", ...)SWITCH + TRUE() 로 범위 구분
구성비Sales Share = DIVIDE([Total Sales], CALCULATE([Total Sales], ALL(Date)))전체 대비 비율
비율 (All/AllSelected)Share All = DIVIDE([Total Sales], CALCULATE([Total Sales], ALLSELECTED(Date)))선택된 필터만 유지

5. 변수 활용 예시

VAR start_date = DATEADD(Date[Date], -3, MONTH) VAR end_date = DATEADD(Date[Date], 0, MONTH) VAR result = CALCULATE([Total Sales], FILTER(ALL(Date), Date[Date] >= start_date && Date[Date] <= end_date)) RETURN result
  • 변수로 시작·종료 날짜를 선언해 가독성 향상 및 중복 계산 방지.

6. 필터 함수 비교

함수설명예시
ALL모든 필터 제거CALCULATE([Total Sales], ALL(Date))
ALLSELECTED슬라이서 등 선택된 필터만 유지CALCULATE([Total Sales], ALLSELECTED(Date))
ALLEXCEPT특정 컬럼을 제외하고 모든 필터 제거CALCULATE([Total Sales], ALLEXCEPT(Date, Date[Year]))

7. Quick Measure 활용 팁

  • 전년 대비 증감률: 총 매출 YOY% Quick Measure 생성 → 자동으로 DIVIDE([Total Sales], CALCULATE([Total Sales], SAMEPERIODLASTYEAR(Date[Date]))) 로 생성.
  • 수동으로 만든 측정값과 Quick Measure 결과가 동일함을 확인 후 필요 시 수식 조정.

8. 실전 팁

  • 텍스트 vs 숫자 정렬: MonthName 같은 텍스트 컬럼은 Month 숫자 컬럼을 기준으로 정렬 설정.
  • 필터 컨텍스트: CALCULATE 안에 FILTER를 넣어 특정 조건만 적용.
  • 변수 선언: 복잡한 계산은 VAR 로 변수 선언 후 RETURN 으로 반환하면 오류 방지.
  • All vs AllSelected: 전체 집계 vs 현재 선택된 필터만 고려할 때 구분해서 사용.

마무리

  • Power BI에서 날짜 테이블을 기반으로 다양한 시간 인텔리전스 함수와 DAX 함수를 활용해 실시간 비즈니스 인사이트를 도출할 수 있다.
  • 측정값은 한 곳에 모아두면 시각화 시 편리하며, Quick Measure를 활용해 반복적인 계산을 빠르게 생성할 수 있다.
  • 필터 함수(ALL, ALLSELECTED)와 변수 선언은 모델을 깔끔하게 유지하고 오류를 줄이는 핵심 도구다.