DAX에서 X 함수는 테이블을 입력받아 각 행을 계산하고, 그 결과들을 누적해서 반환하는 함수입니다. 기본적으로 행별 계산 후 그 결과를 집계하는 형태입니다. X 함수는 행 단위로 계산한 후 누적하는 방식으로 작동하므로, 집합적인 계산이 필요할 때 유용하게 사용됩니다.
SUM() vs. SUMX()
SUM(Sales[SalesAmount])
SUM 함수는 SalesAmount 열의 값을 합산합니다. 200 + 150 + 150 + 150 + 320 = 970
SUMX(Sales, Sales[Quantity] * Sales[Price])
SUMX 함수는 Sales 테이블을 순회하면서 각 행에 대해 Quantity와 Price를 곱한 후, 그 결과를 합산합니다. 200 + 150 + 150 + 150 + 320 = 970
= SUMX(FILTER(InternetSales, InternetSales[SalesTerritoryID]=5),[Freight])
FILTER 함수는 InternetSales 테이블에서 SalesTerritoryID가 5인 행만 필터링합니다. SUMX 함수는 FILTER 함수로 필터링된 InternetSales 테이블을 순회하며 각 행에서 [Freight] 값의 합을 구합니다.
AVERAGE() vs. AVERAGEA() vs. AVERAGEX()
AVERAGE(InternetSales[SalesAmount])
InternetSales[SalesAmount] 열의 전체 값에 대해 평균을 계산합니다.
= AVERAGEA([Amount])
AVERAGEA()는 숫자, 텍스트, TRUE/FALSE 값이 혼합된 데이터에서 평균을 계산할 수 있습니다.
= AVERAGEX(InternetSales, InternetSales[Freight]+ InternetSales[TaxAmt])
이 DAX 식은 AVERAGEX 함수를 사용하여 InternetSales 테이블에서 각 행에 대해 Freight와 TaxAmt 값을 더한 후, 그 평균을 구하는 계산입니다.
- 각 행에 대해 Freight + TaxAmt를 더합니다:
- 첫 번째 행: 10 + 5 = 15
- 두 번째 행: 15 + 7 = 22
- 세 번째 행: 20 + 10 = 30
- 네 번째 행: 25 + 12 = 37
- 그 다음, 평균을 구합니다:
- (15 + 22 + 30 + 37) / 4 = 26
따라서, AVERAGEX(InternetSales, InternetSales[Freight] + InternetSales[TaxAmt])의 결과는 26이 됩니다.
MINX()
MINX(<table>, < expression>,[<variant>])
테이블의 각 행을 계산하여 그 결과 중 최소값을 반환합니다.
= MINX(
FILTER(InternetSales, [SalesTerritoryKey] = 5),
[Freight]
)
FILTER(InternetSales, [SalesTerritoryKey] = 5)를 적용하면, SalesTerritoryKey = 5인 행들만 남습니다. MINX(..., [Freight])가 적용되면, 필터링된 테이블에서 Freight(운송비) 값들의 최소값을 찾습니다.
= MINX(
FILTER(InternetSales, InternetSales[SalesTerritoryKey] = 5),
InternetSales[Freight] + InternetSales[TaxAmt]
)
SalesTerritoryKey = 5인 행을 필터링합니다. 각 행에 대해 Freight + TaxAmt를 계산합니다. MINX 함수는 계산된 Freight + TaxAmt 값들 중에서 최소값을 반환합니다.
MAXX()
MAXX는 X 함수 중 하나로, 주어진 테이블 또는 표현식에서 최댓값을 구하는 데 사용됩니다. 이 함수는 각 행에 대해 계산을 수행한 후, 계산된 결과의 최댓값을 반환합니다.
= MAXX(InternetSales, InternetSales[TaxAmt]+ InternetSales[Freight])
위의 테이블을 예로 들어볼 때, MAXX 함수는 계산된 TaxAmt + Freight 값들 중에서 최대값을 반환합니다. 이 경우 90이 최대값입니다.
COUNT() vs. COUNTX()
COUNT 함수는 테이블의 열에서 비어 있지 않은 값의 수를 셉니다. COUNTX는 표나 테이블에 대해 행 단위로 계산을 수행하고, 지정된 열의 값이 존재하는 행의 개수를 반환하는 함수입니다.
= COUNTX(Product,[ListPrice])
Product 테이블이 다음과 같다고 가정해 보겠습니다. 이 경우 = COUNTX(Product, [ListPrice])는 ListPrice 열에 값이 존재하는 행의 개수를 셉니다. 따라서, COUNTX(Product, [ListPrice])는 ListPrice가 존재하는 행이 3개이므로 결과는 3이 됩니다.
= COUNTX(
FILTER(
Product,
RELATED(ProductSubcategory[EnglishProductSubcategoryName]) = "Caps"
),
Product[ListPrice]
)
FILTER 함수는 Product 테이블에서 조건을 만족하는 행을 반환합니다. RELATED(ProductSubcategory[EnglishProductSubcategoryName])는 Product 테이블과 관련된 ProductSubcategory 테이블의 EnglishProductSubcategoryName 컬럼을 참조합니다. 여기서는 EnglishProductSubcategoryName이 "Caps"인 항목만 필터링합니다. 따라서, 이 DAX 식은 ProductSubcategory 테이블의 EnglishProductSubcategoryName이 "Caps"인 모든 제품에 대해 ListPrice 값이 있는 항목의 개수를 계산하는 식입니다.
PRODUCTX()
PRODUCTX 함수는 DAX에서 특정 표현식의 값을 계산한 후 그 값을 곱하는 함수입니다. COUNTX와 유사하지만, COUNTX는 개수를 세는 반면 PRODUCTX는 값을 곱합니다.
= [PresentValue] * PRODUCTX( AnnuityPeriods, 1 + [FixedInterestRate] )
PRODUCTX 함수는 AnnuityPeriods 테이블의 각 항목에 대해 1 + [FixedInterestRate] 값을 계산하고, 그 값을 모두 곱합니다.
'BI & Visualization > Power BI' 카테고리의 다른 글
Power BI | IF 함수 (0) | 2025.04.05 |
---|---|
Power BI | FILTER(), KEEPFILTERS() (0) | 2025.04.04 |
Power BI | RANK(), RANKX() (0) | 2025.04.02 |
Power BI | Variables (VAR)란? (0) | 2025.04.01 |
Power BI | ALL(), ALLSELECTED(), ALLEXCEPT() (0) | 2025.03.31 |