ALL과 ALLSELECTED는 DAX에서 데이터를 필터링하는 데 사용되는 함수로, 둘은 비슷한 역할을 하지만 다르게 동작합니다. 두 함수는 컨텍스트에서 필터를 제거하거나 조정하는 데 사용됩니다.
ALL() - 모든 필터를 제거
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
ALL 함수는 전체 테이블 또는 열에서 모든 필터를 제거합니다. 즉, 해당 열이나 테이블에 적용된 필터를 완전히 무효화하고, 전체 데이터 범위를 사용하여 계산을 합니다. 주로 총합(GRAND TOTAL)과 같은 값을 계산할 때 사용됩니다.
Total Sales All = CALCULATE(SUM(Sales[SalesAmount]), ALL(Sales))
위 식은 Sales 테이블에 적용된 필터를 모두 제거한 후, 전체 매출 합계를 계산합니다.
위는 예제 데이터입니다. Pivot Table에서 현재 CalendarYear = 2022로 필터되어 있어도 ALL(Sales)가 적용되면 전체 데이터(2022+2023)의 합인 325,000이 반환됩니다.
All Reseller Sales Ratio =
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) /
SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
이 계산은 카테고리별 매출을 전체 매출로 나누어 카테고리 매출의 비율을 구하는 방식입니다. 피벗 테이블에서 필터나 그룹화가 어떻게 설정되어 있는지에 관계없이, 전체 매출을 동일한 기준으로 계산하려면 ALL 함수를 사용하여 필터를 제거하고 올바른 총합을 구할 수 있습니다.
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
분자 부분은 현재 컨텍스트(예: 필터가 적용된 상태)에서 ResellerSales_USD[SalesAmount_USD]의 합계를 계산합니다. 즉, 각 리셀러 또는 특정 조건에 해당하는 매출 합계를 구하는 것입니다.
SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
분모 부분은 ALL(ResellerSales_USD)를 사용하여 ResellerSales_USD 테이블의 모든 필터를 제거한 후, SalesAmount_USD의 합계를 계산합니다. 즉, 전체 리셀러의 총 매출을 구하는 것입니다. ALL 함수는 테이블에서 모든 필터를 제거하므로, 특정 조건이나 필터에 영향을 받지 않고 전체 데이터의 합계를 구합니다.
이 DAX 식의 결과는 각 리셀러의 매출 비율을 계산합니다. 즉, 특정 리셀러의 매출 금액을 전체 리셀러의 매출 금액으로 나누어, 각 리셀러가 전체 매출에서 차지하는 비율을 구하는 것입니다.
Total periods in loan =
CALCULATE(
MAX(Loan Period[Loan Period]),
ALL(Loan Period[Loan Period])
)
이 DAX 수식은 대출 기간(Loan Period)의 최대값을 구하는 역할을 합니다.
ALL(Loan Period[Loan Period])을 사용했기 때문에, 필터가 무시되고 전체 테이블에서 최댓값인 360이 반환됩니다.
ALLSELECTED() - 사용자가 선택한 필터만 유지
ALLSELECTED([<tableName> | <columnName>[, <columnName>[, <columnName>[,…]]]] )
ALLSELECTED 함수는 시각화나 다른 시나리오에서 사용자 선택에 따라 필터를 유지하거나 무효화하는 데 사용됩니다. 이 함수는 사용자가 선택한 필터(슬라이서, 보고서 레벨 필터 등)는 유지하면서, 행 컨텍스트에서 추가된 필터를 제거합니다.
Sales Ratio Selected =
DIVIDE(
SUM(Sales[SalesAmount]),
CALCULATE(
SUM(Sales[SalesAmount]),
ALLSELECTED(Sales)
)
)
만약 ALL(Sales)를 사용하면 전체(325,000)를 기준으로 비율이 계산되므로 결과가 달라집니다. 예시는 아래와 같습니다.
Total selected periods in loan =
CALCULATE(
MAX(Loan Period[Loan Period]),
ALLSELECTED(Loan Period[Loan Period])
)
이 수식은 선택된 범위 내에서 Loan Period의 최대값을 계산하는 역할을 합니다. 즉, ALLSELECTED(Loan Period[Loan Period])를 사용하여 사용자가 선택한 필터 내에서 대출 기간의 최댓값을 찾습니다.
선택된 Loan Period를 기준으로 최댓값을 반환합니다.
ALLEXCEPT() 특정 컬럼을 제외하고 필터 제거
ALLEXCEPT(<table>,<column>[,<column>[,…]])
지정한 컬럼을 제외하고 모든 필터를 제거합니다.
= CALCULATE(
SUM(ResellerSales_USD[SalesAmount_USD]),
ALLEXCEPT(DateTime, DateTime[CalendarYear])
)
ALLEXCEPT(DateTime, DateTime[CalendarYear])는 연도(CalendarYear) 필터는 유지하면서, 월(Month) 등의 다른 모든 필터를 제거합니다. 따라서, 원래는 "2022년 2월"의 매출(20,000)이 나왔겠지만, 이제 "2022년 전체" 매출(60,000)이 반환됩니다.
'BI & Visualization > Power BI' 카테고리의 다른 글
Power BI | RANK(), RANKX() (0) | 2025.04.02 |
---|---|
Power BI | Variables (VAR)란? (0) | 2025.04.01 |
Power BI | FIRSTDATE(), LASTDATE(), PARALLELPERIOD() (0) | 2025.03.30 |
Power BI | CALCULATE() vs. CALCULATETABLE() (0) | 2025.03.29 |
Power BI | Matrix 비주얼 개념 및 사용법 (0) | 2025.03.28 |