TOP
class="layout-aside-left paging-number">
본문 바로가기
타이탄의 도구/Power BI

[POWER BI] DAX 함수로 데이터 모델링 완벽 마스터하기

by 기록자_Recordian 2024. 9. 2.
728x90
반응형

데이터 모델링의 핵심은 데이터를 의미 있고 유용한 정보로 변환하는 데 있습니다.

DAX(Data Analysis Expressions)는 이 과정에서 중요한 역할을 합니다. DAX는 Power BI, Excel Power Pivot, SSAS Tabular 모델 등에서 사용되는 함수 언어로, 데이터 모델링 및 분석을 위한 강력한 도구를 제공합니다. 이번 포스트에서는 DAX의 주요 함수들을 살펴보겠습니다. 각 함수의 정의, 사용법, 그리고 실무에서의 활용법을 자세히 알아보겠습니다.

 

출처: Scrawl Books


SUM

 

◆ 정의: SUM 함수는 지정된 열의 모든 숫자 값을 더하여 합계를 반환합니다.

 

◆ 사용법

SUM(<column>)
  • <column>: 합계를 구할 열을 지정합니다.

활용법: 매출 데이터를 분석할 때, 특정 기간 동안의 총 매출을 구할 수 있습니다. 예를 들어, "Sales" 테이블의 "Revenue" 열의 합계를 구할 수 있습니다.

Total Revenue = SUM(Sales[Revenue])

SUMMARIZE

 

◆ 정의: SUMMARIZE 함수는 테이블을 요약하여 그룹별로 데이터를 집계할 때 사용됩니다.

◆ 사용법:

SUMMARIZE(<table>, <groupBy_column1>, <groupBy_column2>, ..., [<name>], <expression>, ...)
  • <table>: 데이터를 요약할 테이블입니다.
  • <groupBy_column1>, <groupBy_column2>: 그룹화할 열을 지정합니다.
  • [<name>], <expression>: 계산할 값의 이름과 표현식입니다.

활용법: 예를 들어, 각 제품의 총 매출을 계산할 수 있습니다.

Product Revenue = SUMMARIZE(Sales, Sales[ProductID], "Total Revenue", SUM(Sales[Revenue]))

DISTINCTCOUNT

 

◆ 정의: DISTINCTCOUNT 함수는 지정된 열에서 고유한 값의 수를 반환합니다.

◆ 사용법:

DISTINCTCOUNT(<column>)
  • <column>: 고유한 값을 계산할 열입니다.

◆ 활용법: 고객 수를 세는 데 유용합니다. 예를 들어, 주문 테이블에서 고유한 고객 수를 계산할 수 있습니다.

Unique Customers = DISTINCTCOUNT(Orders[CustomerID])

ALL

 

◆ 정의: ALL 함수는 필터를 무시하고 전체 테이블이나 열을 반환합니다.

◆ 사용법:

ALL(<table>|<column>)
  • <table>: 전체 테이블을 반환합니다.
  • <column>: 특정 열의 모든 값을 반환합니다.

◆ 활용법: 비교를 위해 특정 열이나 테이블에 적용된 필터를 제거하고자 할 때 사용됩니다.

All Products = CALCULATE([Total Revenue], ALL(Products))

CALCULATE

 

◆ 정의: CALCULATE 함수는 특정 필터 컨텍스트에서 식을 계산할 때 사용됩니다.

◆ 사용법:

CALCULATE(<expression>, <filter1>, <filter2>, ...)
  • <expression>: 계산할 식입니다.
  • <filter1>, <filter2>: 필터로 사용할 조건들입니다.

활용법: 특정 지역의 매출을 계산하는 경우 사용됩니다.

Revenue in USA = CALCULATE([Total Revenue], Sales[Country] = "USA")

FILTER

 

정의: FILTER 함수는 테이블에서 특정 조건을 만족하는 행을 반환합니다.

사용법:

FILTER(<table>, <filter_expression>)
  • <table>: 필터링할 테이블입니다.
  • <filter_expression>: 조건을 지정하는 식입니다.

활용법: 매출이 1000 이상인 주문만을 필터링할 때 사용됩니다.

High Revenue Orders = FILTER(Sales, Sales[Revenue] >= 1000)

DIVIDE

 

정의: DIVIDE 함수는 두 숫자를 나누고, 0으로 나누는 경우에는 대체 값을 반환합니다.

사용법:

DIVIDE(<numerator>, <denominator>, [<alternate_result>])
  • <numerator>: 분자입니다.
  • <denominator>: 분모입니다.
  • [<alternate_result>]: 선택적으로, 0으로 나눌 때 반환할 값입니다.

활용법: 안전하게 비율을 계산할 때 사용됩니다. 예를 들어, 이익률을 계산할 때 사용합니다.

Profit Margin = DIVIDE([Total Profit], [Total Revenue], 0)

COUNT

 

정의: COUNT 함수는 지정된 열에서 숫자 값이 있는 행의 수를 반환합니다.

사용법:

COUNT(<column>)
  • <column>: 숫자를 세는 열입니다.

활용법: 주문 테이블에서 총 주문 수를 계산할 때 사용됩니다.

Order Count = COUNT(Orders[OrderID])

SUMX

 

정의: SUMX 함수는 테이블의 각 행에 대해 식을 계산하고 그 결과의 합을 반환합니다.

사용법:

SUMX(<table>, <expression>)
  • <table>: 계산할 테이블입니다.
  • <expression>: 각 행에 대해 계산할 식입니다.

활용법: 각 제품의 수량과 단가를 곱한 후, 총 매출을 계산할 때 사용됩니다.

Total Revenue = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])

RELATED

 

정의: RELATED 함수는 현재 테이블에서 관계를 통해 연결된 다른 테이블의 값을 반환합니다.

사용법:

RELATED(<column>)
  • <column>: 반환할 값이 있는 열입니다.

  활용법: 주문 테이블에서 고객의 이름을 가져오고자 할 때 사용됩니다.

Customer Name = RELATED(Customers[Name])

DATEADD

 

정의: DATEADD 함수는 날짜 또는 시간 값을 지정된 간격만큼 이동시킨 새 날짜를 반환합니다.

사용법:

DATEADD(<dates>, <number_of_intervals>, <interval>)
  • <dates>: 날짜 열입니다.
  • <number_of_intervals>: 이동할 간격입니다.
  • <interval>: "DAY", "MONTH", "QUARTER", "YEAR" 중 하나를 지정합니다.

활용법: 전년도 매출을 비교할 때 사용됩니다.

Previous Year Sales = CALCULATE([Total Revenue], DATEADD(Sales[Date], -1, YEAR))

TOTALYTD

 

정의: TOTALYTD 함수는 지정된 날짜를 기준으로 올해의 누적 합계를 계산합니다.

사용법:

TOTALYTD(<expression>, <dates>, [<filter>], [<year_end_date>])
  • <expression>: 누적 합계를 계산할 식입니다.
  • <dates>: 날짜 열입니다.
  • [<filter>]: 선택적으로 필터를 지정할 수 있습니다.
  • [<year_end_date>]: 회계 연도의 마지막 날짜를 지정할 수 있습니다.

활용법: 올해의 누적 매출을 계산할 때 사용됩니다.

YTD Revenue = TOTALYTD([Total Revenue], Sales[Date])

RANKX

 

정의: RANKX 함수는 테이블에서 특정 값의 순위를 반환합니다.

사용법:

RANKX(<table>, <expression>, [<value>], [<order>], [<ties>])
  • <table>: 순위를 매길 테이블입니다.
  • <expression>: 순위를 계산할 식입니다.
  • [<value>]: 선택적으로 특정 값을 지정할 수 있습니다.
  • [<order>]: 순서를 지정합니다. "ASC" 또는 "DESC"를 사용할 수 있습니다.
  • [<ties>]: 동일한 값이 있을 때의 처리 방법을 지정합니다.

활용법: 제품 매출 순위를 매길 때 사용됩니다.

Product Rank = RANKX(ALL(Products), [Total Revenue], , DESC)

이렇게 다양한 DAX 함수를 사용하면 데이터 분석과 보고서 작성에 있어 강력한 인사이트를 도출할 수 있습니다. DAX는 처음에는 복잡하게 느껴질 수 있지만, 각 함수의 역할과 사용법을 이해하면 보다 효율적이고 정교한 데이터 모델링이 가능합니다. 이제 직접 데이터 모델링에 DAX 함수를 적용해 보세요!

 

 

728x90
반응형