Power BI 필수 함수

경영정보시각화 자격증 실기 시험 대비 Power BI 필수 함수를 정리하였습니다.
숫자/집계/통계함수
  • J
문자열 함수
  • J
논리 함수
  • J
날짜 함수
  • J
필터 함수
  • J
기타
  • J

테이블 조작/계산 함수

Created by
  • J
    JINA
Created at
• ADDCOLUMNS: 테이블에 열 추가
1.
함수 정의 :
ADDCOLUMNS 함수는
기존 테이블에 새로운 열을 추가할 때 사용하는 함수입니다. 이 함수는 기존 테이블의 데이터를 바탕으로 계산된 값을 새 열로 추가하는 데 유용합니다. ADDCOLUMNS는 원본 테이블을 수정하지 않고, 계산된 열이 추가된 새로운 테이블을 반환합니다.
2.
기본 구문 :
ADDCOLUMNS( Table, "NewColumnName", Expression)
3.
매개 변수:
Table: 기존 테이블
NewColumnName: 추가할 열의 이름
Expression: 새로운 열에 들어갈 값의 계산식
4.
예시 코드 :
예를 들어, 학생의 성적 테이블이 있다고 가정해 보겠습니다
위 테이블에 각 학생의 평균 점수를 추가하고 싶다면, ADDCOLUMNS를 사용할 수 있습니다.
ADDCOLUMNS( Students, "평균 점수", ([국어] + [수학]) / 2 )
이렇게 하면 새로운 테이블이 반환되며, 그 결과는 다음과 같습니다:
이 함수는 데이터 분석 중 추가적인 정보를 계산하여 테이블에 덧붙이고 싶을 때 매우 유용합니다.
DISTINCT: 고유한 값 반환
1.
함수 정의 :
DISTINCT 함수는
특정 열에서 중복된 값을 제거하고 고유한 값들만 반환합니다. 이 함수는 데이터를 집계하거나 고유한 값의 목록을 얻고자 할 때 유용합니다.
2.
기본 구문 :
DISTINCT(column)
3.
예시 코드:
예를 들어, 다음과 같은 테이블이 있다고 가정해 봅시다:
여기서 DISTINCT 함수를 사용하여 고유한 고객 이름 목록을 얻고 싶다면,
UniqueCustomers = DISTINCT('테이블 이름'[고객 이름])
결과 :
이 코드를 실행하면 다음과 같은 결과가 반환됩니다:
이렇게 DISTINCT 함수는 중복된 항목을 제거하고 고유한 값들만 보여줍니다.
GROUPBY: 그룹화된 테이블 반환
1.
함수 정의 :
GROUPBY 함수는
데이터 테이블에서 그룹을 생성하고, 각 그룹에 대한 집계 연산을 수행할 때 사용됩니다. SQL의 GROUP BY 구문과 비슷한 역할을 하지만, 조금 다른 점이 있어 주의해야 합니다. GROUPBY 함수는 주로 데이터를 특정 기준으로 묶고, 그 그룹 내에서 새로운 컬럼을 생성하거나 계산할 때 유용합니다.
2.
기본 구문 :
GROUPBY(
Table,
GroupBy_Column1, [Optional_GroupBy_Column2, ...],
"Name1", Aggregation1,
"Name2", Aggregation2
)
3.
매개 변수 :
Table: 그룹화를 할 원본 테이블.
GroupBy_Column: 그룹화를 수행할 기준이 되는 컬럼.
Name: 생성할 컬럼의 이름.
Aggregation: 집계 연산을 수행하는 DAX 표현식.
4.
예시 코드 :
예를 들어, 판매 데이터를 기준으로 매장별 총 판매량을 계산한다고 가정해보겠습니다. 데이터 테이블(Sales)은 다음과 같은 컬럼으로 구성되어 있습니다:
GROUPBY를 사용해 매장별로 총 판매량을 구하려면 다음과 같이 작성할 수 있습니다:
EVALUATE
GROUPBY(
Sales,
Sales[Store],
"TotalSales", SUMX(CURRENTGROUP(), Sales[Sales])
)

결과 :
5.
동작 방식 :
Sales 테이블에서 Store 컬럼을 기준으로 데이터를 그룹화합니다.
각 그룹(Store A와 Store B)에서 SUMX를 사용해 Sales 값을 합산합니다.
결과로 그룹별로 합계가 계산된 테이블을 반환합니다.
6.
주의할 점 :
• GROUPBY는 SUMMARIZE와는 다르게
자동으로 집계를 수행하지 않습니다. CURRENTGROUP() 함수로 현재 그룹 내의 데이터를 참조해야 합니다.
• 복잡한 집계가 필요한 경우 SUMMARIZE, SUMMARIZECOLUMNS와 같은 다른 함수도 고려해볼 수 있습니다.
7.
요약 :
GROUPBY를 사용하면 특정 기준으로 데이터를 쉽게 그룹화하고, 그
그룹별로 계산을 수행할 수 있습니다.
RELATED: 관계된 테이블에서 값 반환
1.
함수 정의 :
RELATED 함수는
특정 테이블에서 관계를 통해 다른 테이블의 열을 참조하는 함수로, 테이블 간의 관계를 활용할 때 매우 유용합니다.
2.
기본 구문 :
RELATED(columnName)
3.
매개 변수 :
columnName: 관계가 있는 다른 테이블의 특정 열을 지정합니다. 이 열은 가져오려는 값을 가진 열로,
관계가 설정된 테이블이어야만 RELATED 함수를 사용할 수 있습니다.
RELATED 함수는 다대일(여러 개의 값이 하나의 값을 참조하는 구조) 또는 1대1 관계에서만 사용됩니다. 즉, 참조할 때 관계가 다대다 관계로 설정된 경우에는 사용할 수 없습니다.
4.
예제 코드 :
• 시나리오 설정
Products 테이블과 Sales 테이블이 있다고 가정합니다:
Products 테이블에는 ProductID, ProductName, Price 등의 정보가 있고,
Sales 테이블에는 SaleID, ProductID, Quantity (판매된 수량) 등이 있습니다.
이 두 테이블은 ProductID 열을 통해 관계가 연결되어 있습니다.
Sales 테이블에서 제품 가격을 가져오기 위해 ProductID를 기준으로 Products 테이블을 참조 함.
1.
기본 사용법
Sales 테이블에서 판매된 각 제품의 가격을 RELATED 함수를 이용하여 가져오는 방법을 보겠습니다.
이 예제에서는 Sales 테이블에서 Price라는 새 계산 열을 추가하여 각 제품의 가격을 표시합니다.
Price = RELATED(Products[Price])
결과 :
이 식은
Sales 테이블의 각 행에서 ProductID를 기준으로 Products 테이블의 Price 값을 가져옵니다.
위의 식은 Sales 테이블에서 ProductID 값에 해당하는 Products 테이블의 Price 값을 가져옵니다.
이렇게 하면 Sales 테이블에 각 판매 항목의 가격을 추가로 표시할 수 있습니다.
2.
총 판매 금액 계산
이제 각 판매 항목의 총 판매 금액(TotalSales)을 계산하는 경우를 보겠습니다.
여기서는 Price와 Quantity 값을 곱하여 총 금액을 계산할 수 있습니다.
TotalSales = RELATED(Products[Price]) * Sales[Quantity]
결과
여기서 TotalSales 열은 RELATED 함수를 통해 Products 테이블에서 가격을 가져온 후,
해당 가격에 Quantity를 곱하여 총 판매 금액을 계산합니다.
5.
요약 :
RELATED 함수는 두 테이블 간 관계가 설정되어 있을 때 유용하게 사용할 수 있습니다.
• RELATED(columnName) 구문에서 columnName은 관계된 테이블의 특정 열을 참조할 때 필요합니다.
RELATED 함수는 다대일 또는 1대1 관계에서만 작동하며, 다른 테이블의 값을 가져와 다양한 계산에 활용할 수 있습니다.
RELATEDTABLE: 관계된 테이블 반환
1.
함수 정의 :
RELATEDTABLE 함수는
두 테이블 간의 관계를 이용해, 현재 테이블에서 관련된 다른 테이블의 모든 행을 가져오는 함수입니다. 이 함수는 주로 일대다 관계에서 사용되며, 하나의 테이블에 있는 특정 필드의 값을 기준으로, 다른 테이블의 관련 데이터를 참조합니다.
2.
기본 구문 :
RELATEDTABLE(TableName)
3.
매개 변수 :
TableName: 현재 테이블과 관계가 설정된, 가져오려는 다른 테이블의 이름입니다.
TableName에 해당하는 테이블에서 현재 행과 관련된 데이터를 모두 반환합니다.
4.
작동 원리 :
RELATEDTABLE은 현재 테이블의 각 행에 대해, 관계가 있는 테이블에서 연결된 행의 집합을 가져옵니다.
예를 들어, 고객 테이블(Customers)과 주문 테이블(Orders)이 일대다 관계로 연결되어 있다고 가정하면,
RELATEDTABLE(Orders) 함수는 각 고객의 모든 주문을 가져오도록 도와줍니다.
5.
예시 코드 :
고객 테이블 과 주문 테이블 두 테이블이 있다고 가정합니다.
각 고객이 몇 번의 주문을 했는지 고객 테이블에 OrderCount라는 열을 추가해 계산해 보겠습니다.
OrderCount라는 열을 고객 테이블에 추가합니다.
OrderCount = COUNTROWS(RELATEDTABLE(Orders))
RELATEDTABLE(Orders): 주문 테이블에서 현재 고객과 관련된 행(주문)을 모두 가져옵니다.
COUNTROWS: 가져온 주문 테이블의 행 수를 세어, 각 고객이 가진 주문의 수를 나타냅니다.
결과 :
고객 테이블의 OrderCount 열은 다음과 같이 나옵니다.
결과 해석 :
John Doe 고객은 3개의 주문(ID: 101, 103, 105)을 했으므로 OrderCount는 3입니다.
Jane Smith는 1개의 주문(ID: 102)을 해서 OrderCount가 1입니다.
Chris Park와 Linda Brown은 주문이 없어서 OrderCount 값이 0으로 표시됩니다.
6.
요약 :
RELATEDTABLE 함수는 고객 ID를 기준으로 주문 테이블에서 고객과 관련된 데이터를 찾아 각 고객의 주문 수를 세는 데 도움을 줍니다.
ROW: 새 행 반환
1.
함수 정의 :
ROW 함수는
하나의 행을 생성하는 함수로, 특정 열 이름과 값을 쌍으로 설정해 테이블을 만들 수 있습니다. 단일 행으로 구성된 테이블을 생성하므로, 여러 필드 값을 한 줄로 결합해서 보여줄 때 유용합니다.
2.
기본 구문 :
ROW("ColumnName1", Expression1, "ColumnName2", Expression2, ...)
3.
매개변수 :
ColumnName1, ColumnName2, ...: 생성할 테이블에서의 열 이름을 지정합니다. 각 열 이름은 문자열로 입력해야 합니다.
Expression1, Expression2, ...: 열 이름에 해당하는 값이나 수식을 지정합니다. 이 부분에 계산식이나 값이 들어갈 수 있으며, 필요한 만큼 추가 가능합니다.
4.
예시 코드 :
(1)
기본예시
아래 예시에서는 ROW 함수를 사용해
"Product", "Price", "Discount"라는 세 개의 열을 가진 단일 행 테이블을 생성합니다.
ROW(
"Product", "Laptop",
"Price", 1500,
"Discount", 0.1
)

결과 :
이처럼 ROW 함수를 통해 "Product"라는 이름의 열에 "Laptop", "Price"라는 이름의 열에,
1500, "Discount"라는 이름의 열에 0.1의 값을 가지는 테이블을 생성했습니다.
(2)
활용 예시 - 여러 값을 결합한 계산
다음 예시는 특정 제품에 대해 할인 후 가격을 계산한 단일 행 테이블을 만드는 예제입니다.
ROW(
"Product", "Smartphone",
"OriginalPrice", 1000,
"Discount", 0.2,
"DiscountedPrice", 1000 * (1 - 0.2)
)

결과 :
ROW 함수를 사용하여 DiscountedPrice 열을 계산하여 제품의 할인 후 가격을 계산하여 보여줍니다.
5.
요약 :
ROW 함수는 단일 행을 가진 테이블을 생성하는 함수입니다.
• 열 이름과 그에 대한 표현식을 지정하여 다양한 값 또는 계산 결과를 하나의 행에 결합해 보여줄 수 있습니다.
주로 데이터가 단일 행일 때, 또는 여러 계산 값을 함께 표시할 때 사용하기 적합합니다.
SUMMARIZE: 요약된 테이블 반환
1.
함수 정의 :
SUMMARIZE 함수는
특정 컬럼을 기준으로 그룹화된 테이블을 생성하며, 그 안에 원하는 컬럼이나 새로운 계산을 추가할 수 있습니다. GROUPBY 함수와 비슷하지만 더 직관적이며, 새로운 계산 열을 바로 추가할 수 있어 자주 사용됩니다.
2.
기본 구문 :
SUMMARIZE(
테이블 이름,
그룹화할 컬럼1,
그룹화할 컬럼2, ...,
[새로운 계산 열 이름], 계산식
)
3.
매개변수 :
테이블 이름: 그룹화할 테이블 이름을 지정합니다.
그룹화할 컬럼: 테이블에서 그룹화 기준으로 사용할 컬럼을 한 개 이상 지정할 수 있습니다.
새로운 계산 열 이름: 추가할 계산 열의 이름을 대괄호로 감쌉니다. 이 부분은 선택 사항으로, 계산식을 지정하지 않으면 그룹화된 테이블만 반환됩니다.
계산식: 새로운 계산 열에 들어갈 값 또는 집계 계산을 지정합니다.
4.
예시 코드 :
(1) 기본 예시
Sales라는 테이블이 있고, 각 행에는 Product, Region, SalesAmount 컬럼이 있다고 가정해봅시다.
Product별로 Region에서 발생한 총 SalesAmount를 구하고 싶다면,
SUMMARIZE 함수를 아래와 같이 사용할 수 있습니다.
SUMMARIZE(
Sales,
Sales[Product],
Sales[Region],
"TotalSales", SUM(Sales[SalesAmount])
)

구문 설명:
Sales[Product], Sales[Region]을 기준으로 그룹화됩니다.
"TotalSales"라는 새로운 열이 추가되며, 각 그룹의 SalesAmount를 합산한 결과가 들어갑니다.
결과 테이블 :
이 구문을 실행하면 다음과 같은 결과가 나옵니다.
결과 설명 :
• Product A - East: SalesAmount 값이 100 + 300 = 400으로 합산되었습니다.
• Product A - West: SalesAmount 값이 150으로 유지되었습니다 (유일한 값이기 때문).
• Product B - East: SalesAmount 값이 200 + 50 = 250으로 합산되었습니다.
• Product B - West: SalesAmount 값이 250으로 유지되었습니다.
(2) 추가 활용 예시
만약
특정 조건을 추가해 계산하고 싶다면,
SUMMARIZE 함수는 FILTER 함수와 함께 사용할 수 있습니다.
예를 들어, 특정 지역의 매출만 보고 싶다면 다음과 같이 사용합니다.
SUMMARIZE(
FILTER(Sales, Sales[Region] = "East"),
Sales[Product],
"TotalSales", SUM(Sales[SalesAmount])

)
결과:
이 구문은 S
ales 테이블에서 Region이 "East"인 데이터만 필터링하고,
Product별로 SalesAmount의 합계를 TotalSales 열에 계산합니다.
원본 데이터 중
"East" 지역만 필터링한 테이블 :
결과 테이블 :
위 구문을 실행하면 다음과 같은 결과가 나옵니다.
결과 설명 :
• Product A: SalesAmount가 100 + 300 = 400으로 합산되었습니다.
• Product B: SalesAmount가 200 + 50 = 250으로 합산되었습니다.
5.
요약 :
SUMMARIZE는
특정 조건을 적용하여 원하는 데이터만 필터링하고, 그 결과를 그룹화하여 요약 테이블을 만드는데 유용합니다.
SUMMARIZECOLUMNS: 열을 기준으로 요약 테이블 생성
1.
함수 정의 :
SUMMARIZECOLUMNS 함수는
지정된 열과 필터를 기준으로 데이터를 요약하여 반환합니다. 이는 특정 그룹화된 데이터를 요약하고, 필터링하여 원하는 형태의 결과 테이블을 만들어줍니다.
2.
기본 구문 :
SUMMARIZECOLUMNS(
<그룹화 기준 열>,
[필터 표현식],
<그룹화 기준 열 2>,
[필터 표현식 2],
…,
<요약할 테이블 또는 계산된 열>
)
3.
매개변수 :
<그룹화 기준 열>:
요약하고 싶은 열을 그룹화할 기준으로, 그룹별로 요약을 생성할 열들을 나열합니다.
[필터 표현식]:
요약할 테이블을 특정 기준으로 필터링하는 조건입니다.
<요약할 테이블 또는 계산된 열>: SUM이나 COUNT와 같은 집계 함수를 사용하여, 요약할 계산 열을 지정합니다.
4.
예시 코드 :
다음과 같은 Sales 테이블이 있다고 가정해 보겠습니다:
이 예시에서 Year가 2023인 데이터만 필터링하여,
Region과 Product별로 Sales의 총합을 구하고 싶다고 가정해보겠습니다.
SUMMARIZECOLUMNS 함수 예시
SUMMARIZECOLUMNS(
Sales[Region], -- 그룹화 기준 열 (Region)
Sales[Product], -- 그룹화 기준 열 (Product)
Sales[Year] = 2023, -- 필터 표현식 (Year = 2023인 데이터만 필터링)
"Total Sales", SUM(Sales[Sales]) -- 계산된 열 (총 판매액)
)

설명 :
Sales[Region]과 Sales[Product] 열을 기준으로 데이터를 그룹화합니다.
Sales[Year] = 2023이라는 필터 표현식을 사용하여,
Year가 2023인 데이터만 선택합니다.
"Total Sales"라는 새 열을 생성하고,
각 그룹에 대해 Sales[Sales] 값의 합계를 계산합니다.
결과 :
위 쿼리는 Year가 2023인 데이터만 필터링한 후,
Region과 Product별로 Sales의 총합을 계산하여 다음과 같은 결과 테이블을 반환합니다:
5.
요약 :
이와 같이,
SUMMARIZECOLUMNS의 필터 표현식을 사용하면 특정 조건을 적용하여 데이터를 효율적으로 요약할 수 있습니다.
참고 : 필터가 필요한 경우 SUMMARIZE 함수 사용
1.
SUMMARIZE 함수에서는 SUMMARIZECOLUMNS와 달리 필터 표현식을 직접 사용할 수 없기 때문에, 조건을 적용하려면 CALCULATE와 함께 사용해야 합니다. 즉, CALCULATE를 통해 필터 컨텍스트를 설정한 뒤, SUMMARIZE로 그룹화와 요약을 수행해야 합니다.
위 예시와 동일한 조건을 SUMMARIZE 함수로 작성하는 방법은 다음과 같습니다.
2.
SUMMARIZE 함수 예시 (필터 적용)
CALCULATE(
SUMMARIZE(
Sales,
Sales[Region], -- 그룹화 기준 열 (Region)
Sales[Product], -- 그룹화 기준 열 (Product)
"Total Sales", SUM(Sales[Sales]) -- 계산된 열 (총 판매액)
),
Sales[Year] = 2023 -- 필터 조건 (Year = 2023인 데이터만 선택)
)
3.
설명
CALCULATE 함수가 먼저 사용되어, Sales[Year] = 2023 조건을 적용합니다. 이로 인해 Sales 테이블에서 Year가 2023인 데이터만 필터링됩니다.
SUMMARIZE 함수가 필터링된 데이터를 기반으로, Sales[Region]과 Sales[Product] 열을 기준으로 데이터를 그룹화합니다.
"Total Sales"라는 계산된 열을 생성하고, 각 그룹에 대해 Sales[Sales] 값의 합계를 계산합니다.
결과
위 DAX 코드도 Year가 2023인 데이터만 필터링하고, Region과 Product별로 Sales의 총합을 계산하여 다음과 같은 결과를 반환합니다:
4.
이와 같이 SUMMARIZE 함수는 직접적인 필터 표현식을 지원하지 않기 때문에 CALCULATE를 사용하여 필터 컨텍스트를 적용한 후에 요약 작업을 수행해야 합니다.
TOPN: 상위 N개 값 반환
1.
함수 정의 :
TOPN 함수는 지정된 순서에 따라 상
위 N개의 행을 필터링하여 반환하는 함수입니다. 주로 데이터의 상위 항목을 추출할 때 사용하며, 예를 들어 매출 상위 5개 제품, 최고 성적 상위 3명 등의 결과를 가져올 수 있습니다.
2.
기본 구문 :
TOPN(<N>, <table>, <orderBy_expression>, [<order>])
3.
매개 변수 :
N: 반환할 행의 개수를 지정합니다. 예를 들어, 상위 5개를 반환하고 싶다면 5를 입력합니다.
table: 함수가 적용될 테이블을 지정합니다. 여기서 데이터를 가져오고 필터링하여 상위 N개의 결과를 반환합니다.
orderBy_expression: 정렬 기준이 될 열이나 계산식을 입력합니다. 예를 들어, 매출액을 기준으로 정렬하고 싶다면 매출액 열을 넣습니다.
order (선택 사항): 정렬 방향을 지정합니다. 기본값은 내림차순(DESC)이며, 오름차순으로 정렬하려면 ASC를 입력합니다.
4.
예시 코드 :
다음은 TOPN 함수를 사용하여 특정 제품의 매출 상위 3개를 가져오는 예시입니다.
예시 시나리오:
매출 데이터 테이블 Sales가 있으며, 주요 열은 다음과 같습니다:
Product : 제품명
SalesAmount : 매출 금액