함수 정의 : 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 함수는 주로 데이터를 특정 기준으로 묶고, 그 그룹 내에서 새로운 컬럼을 생성하거나 계산할 때 유용합니다.
매개 변수 : 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]) ) 결과: 이 구문은 Sales 테이블에서 Region이 "East"인 데이터만 필터링하고,
각 Product별로 SalesAmount의 합계를 TotalSales 열에 계산합니다. 원본 데이터 중 "East" 지역만 필터링한 테이블 :
요약 : 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 : 매출 금액